On Fri, Dec 30, 2016 at 9:19 AM, Rich Shepard <rshep...@appl-ecosys.com> wrote:
> On Fri, 30 Dec 2016, Adrian Klaver wrote: > > DEFAULT is what is the column is set to if the user does not specify a >> value. As shown above a user can supply a NULL value. To guard against >> that the NOT NULL constraint is required. >> > > One more case I'd appreciate being clarified: when the column's value has > a check constraint with acceptable values in a list. For example, > > param_units VARCHAR(8) DEFAULT 'mg/L' > CONSTRAINT param_units > CHECK (param_units IN ('ppm', 'mg/L', 'ug/L', 'umho/cm', 'percent', > 'cfm', 'gpm')), > > Seems to me that if values are constrained by a list a NULL cannot be > entered by the user. Is this correct? > > https://www.postgresql.org/docs/9.6/static/sql-createtable.html "The CHECK clause specifies an expression producing a Boolean result which new or updated rows must satisfy for an insert or update operation to succeed. Expressions evaluating to TRUE or UNKNOWN succeed." NULL == "UNKNOWN" David J.