On Fri, Dec 30, 2016 at 9:19 AM, Rich Shepard <[email protected]>
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.