约束定义在列上,限制了列里存储的值。当尝试在该列上写入或更新为违反约束定义的值时,会触发一个错误并回滚这个操作;当尝试在已有的表的列上加上一个跟现有数据相冲突的约束时,也会触发一个错误并回滚这个操作。

    约束可以被启用或禁用。默认情况下,约束创建后状态是启用的。

    约束的类型有:

    • 非空约束(NOT NULL),不允许约束包含的列的值包含NULL。

    如 ware 表的 (w_name, w_city )列上有个唯一约束,表示每个城市里仓库的名称必须是不重复的。

    • 主键约束(PRIMARY KEY),是 NOT NULL 约束和唯一约束的组合。

    如 ware 表和 cust 表都有个主键 w_id 和 c_id ,这两列不允许为 NULL 并且必须是不重复的。

    如 cust 表的 c_w_id 上有个外键约束引用了 ware 表的 w_id 列,表示业务上顾客归属的仓库必须是属于仓库表里的仓库。

    当列上有 NOT NULL 约束时,通常建议设置默认值。当列类型是日期或时间类型时,可以设置默认值为数据库当前时间。

    • 示例:为表的时间列设置默认值,可以使用 sysdate 或 systimestamp 函数。