数据完整性 / 对象模式和违反检测 |
一个使用 INSERT 语句的示例可说明启用模式、禁用模式与过滤模式之间的差异。请考虑这样一条 INSERT 语句,其中一个用户试图在表上添加不满足完整性约束的一行。例如,假设用户 joe 创建了名为 cust_subset 的表,且此表由下列列构成:ssn(客户的社会保险编号)、fname(客户的名)、lname(客户的姓)以及 city(客户生活的城市)。ssn 列具有 INT 数据类型。其他三列有 CHAR 数据类型。
假设用户 joe 定义了 lname 列为非空,但尚未将名称指定给非空约束,于是,数据库服务器已隐式地将名称 n104_7 指定给此约束。最后,假设用户 joe 在 ssn 列上创建了名为 unq_ssn 的唯一索引。
INSERT INTO cust_subset (ssn, fname, city) VALUES (973824499, "jane", "los altos");
要更好地理解启用模式、禁用模式与过滤模式之间的区别,您可在下面三个部分中查看前面的 INSERT 语句的结果。