如何在创建的表中强制执行约束?
问题描述:
我试图找出正确的约束语法如下声明:如何在创建的表中强制执行约束?
“对于一个给定的站点,或者都集水区和流域身高必须指定,或者两者都不指定(即它们都是NULL,或者它们都不是NULL) - 注意这是一个TABLE级约束。“
流域面积和流域高度是我在表中列。
我迄今已做的是
- 右键在左窗格中单击表名称,打开“编辑表”
- 点击“编辑”
- 点击在“约束”左窗格中
- 点击绿色加号>“新的检查约束”
这是什么一样打开“编辑表”箱C一个新的文本部分取而代之的是“检查条件”,我必须在Oracle SQL Developer可以理解的语法中指定约束条件。
此方法迄今为止与其他约束一起工作,但由于某种原因,我无法弄清楚如何对这个特定字词进行处理。
任何帮助将不胜感激,谢谢。
这一切都发生在Oracle SQL Developer中。
答
下面是实际的DDL
alter table your_table
add constraint your_table_catchment_ck check
((Catchment_Area is not null and Catchment_Height is not null)
or (Catchment_Area is null and Catchment_Height is null)
)
对于你只需要使用条件(下文check
位的IDE。当心所有的括号!
类似'CHECK((CatchmentArea IS NULL和CatchmentHeight IS NULL)OR(CatchmentArea IS NOT NULL和CatchmentHeight IS NOT NULL))?? – ZLK
MySQL不强制实施CHECK约束。我们需要在MySQL中强制执行这种约束,我们可以在BEFORE INSERT和BEFORE UPDATE触发器中执行检查。 – spencer7593
与[this]类似(http://stackoverflow.com/questions/44060363/how-to-enforce-a-constraint-in-a-table-already-created)... – Aleksej