约束(Constraint)¶
- 在定义表时设置完整性约束
在定义表时可以设置约束完整性,下面的CREATE TABLE和ALTER TABLE语句都可以定义约束完整性:
CREATE TABLE staff(a int primary key, b int);
或
CREATE TABLE staff(a int not null, b int);
ALTER TABLE staff ADD CONSTRAINT staff_con PRIMARY KEY (a);
ALTER TABLE语句的约束完整性可能失败,因为表中已有的数据可能不满足约束完整性。在这种情况下,语句将回滚。
- 删除现有的完整性约束
如果规则不再有效或者约束不再需要,可以删除约束完整性。可以使用ALTER TABLE语句的DROP子句删除约束。下面的语句删除一个完整性约束:
CREATE TABLE staff(a int not null, b int);
ALTER TABLE staff ADD CONSTRAINT staff_con PRIMARY KEY (a);
ALTER TABLE staff DROP CONSTRAINT staff_con;
如果有外键引用到这个表的UNIQUE或者PRIMARY KEY约束,必须在语句最后加上CASCADE,否则,将不能删除约束。
- 延迟约束检查
在创建表时可以指定是否延迟约束检查。一个非延迟的约束将在每条命令之后马上执行检查,而延迟的约束检查将推迟到事务结尾执行。缺省是不可延迟(NOT DEFERRABLE)。