如何在SQL中编写CHECK约束,允许一系列字符串或空值?

Owe*_*wen 3 sql ddl hsqldb check-constraint

我正在尝试为SQL中的字段编写检查约束,该字段允许一系列字符串(在本例中为省名)或空值.目前的代码是这样的:

ALTER TABLE CODEDLOCATION
ADD CHECK (ADM1='Central' OR ADM1='East' OR ADM1='Far-Western' OR ADM1='Mid-Western' OR ADM1='West')
Run Code Online (Sandbox Code Playgroud)

这适用于ADM1字段,但如果新记录中的ADM1字段存在空值/空值,则会导致错误.我尝试了以下两个选项,但都不起作用:

ALTER TABLE CODEDLOCATION
ADD CHECK (ADM1='' OR ADM1='Central' OR ADM1='East' OR ADM1='Far-Western' OR ADM1='Mid-Western' OR ADM1='West')

ALTER TABLE CODEDLOCATION
ADD CHECK (ADM1=null OR ADM1='Central' OR ADM1='East' OR ADM1='Far-Western' OR ADM1='Mid-Western' OR ADM1='West')
Run Code Online (Sandbox Code Playgroud)

将HSQLDB与OpenOffice Base一起使用.谢谢!

PS我在这里使用检查而不是外键约束的原因与使用OO Base表单的一些挑战有关...

Mur*_*nik 5

nulls由is运营商评估,而不是=运营商:

ALTER TABLE CODEDLOCATION
ADD CHECK 
(ADM1 IS null OR 
 ADM1 = 'Central' OR 
 ADM1 = 'East' OR 
 ADM1 = 'Far-Western' OR 
 ADM1 = 'Mid-Western' OR 
 ADM1 = 'West')
Run Code Online (Sandbox Code Playgroud)