向大家介紹Oracle,可能好多人還不了解Oracle Check約束,沒有關系,看完本文你肯定有不少收獲,希望本文能教會你更多東西。
◆在Oracle Check約束的表達式中必須引用到表中的一個或多個字段,並且表達式的計算結果必須是一個布爾值
◆可以在表級或字段級定義
◆對同一個字段可以定義多個Oracle Check約束,同時也可以定義NOT NULL約束
- create table employees
- (sal number(7,2)
- constraint emp_sal_ck1 check (sal > 0)
- )
- alter table employees
- add constraint emp_sal_ck2 check (sal < 20000)
刪除約束
◆alter table dept drop unique (dname,loc) --指定約束的定義內容
◆alter table dept drop constraint dept_dname_loc_uk --指定約束名
刪除約束時,默認將同時刪除約束所對應的索引,如果要保留索引,用KEEP INDEX關鍵字如果要刪除的約束正在被其它約束引用,通過ALTER TABLE..DROP語句中指定CASCADE關鍵字能夠同時刪除引用它的約束利用下面的語句在刪除DEPT表中的PRIMARY KEY約束時,同時將刪除其它表中引用這個約束的FOREIGN KEY約束:
alter table dept drop primary key cascade
禁用/激活約束(禁用/激活約束會引起刪除和重建索引的操作)
◆alter table employees disable/enable unique email
◆alter table employees disable/enable constraint emp_ename_pk
◆alter tabel employees modify constraint emp_pk disable/enable
◆alter tabel employees modify constraint emp_ename_phone_uk disable/enable
如果有FOREIGN KEY約束正在引用UNIQUE或PRIMARY KEY約束,則無法禁用這些UNIQUE或PRIMARY KEY約束,這時可以先禁用FOREIGN KEY約束,然後再禁用UNIQUE或PRIMARY KEY約束;或者可以在ALTER TABLE...DISABLE語句中指定CASCADE關鍵字,這樣將在禁用UNIQUE或PRIMARY KEY約束的同時禁用那些引用它們的FOREIGN KEY約束,如:
alter table employees disable primary key cascade
約束數據字典
◆all_constraints/dba_constraints/user_constraints 約束的基本信息,包括約束的名稱,類型,狀態(約束類型:C(Oracle Check約束),P(主碼約束),R(外部碼約束),U(唯一碼約束))
◆all_cons_columns/dba/user 約束對應的字段信息