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中,如下表: