CREATE TABLE insured_autos(policy_id NUMBER CONSTRAINT pk_policies PRIMARY KEY,vin VARCHAR2(10),coverage_begin DATE,coverage_term NUMBER,CONSTRAIN unique_auto UNIQUE (policy_id,vin) USING INDEX TABLESPACE index STORAGE (INITIAL 1M NEXT 10M PCTINCREASE 0));
用户可以禁用未以性约束,但他仍然存在,禁用唯一性约束使用ALTER TABLE 语句。
ALTER TABLE insured_autos DISABLE CONSTRAIN unique_name;
删除唯一性约束,使用ALTER TABLE....DROP CONSTRAIN语句:
ALTER TABLE insured_autos DROP CONSTRAIN unique_name;
ON DELETE子串告诉ORACLE假如父纪录(parent record)被删除后,子记录做什么。缺省情况下禁止在子记录还存在的情况下删除父纪录。 外部键和NULL值 在外部键约束保护的数据列中NULL值的处理可能产生不可预料的结果。ORACLE 使用ISO standar Match None规则增强外部键约束。这个规则规定假如任何外部键作用的数据列包含有一个NULL值,那么任何保留该键的数据列在父表中没有匹配值。 比如,在父表AUTOMOBILES中,主键作用于数据列MAKE,MODEL,YEAR上,用户使用的表INSURED_AUTOS有一个外部约束指向AOTOMOBILES,注重在INSURES_AUTOS中有一数据行的MODEL列为NULL值,这一行数据已经通过约束检查,即使MAKE列也没有显示在父表AUTOMOBILES中,如下表: