制約スクリプト

※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください

--テーブル作成時に制約を付与する(制約名は自動生成)
CREATE TABLE TAB1 (
 COL1 NUMBER PRIMARY KEY, --プライマリキー
 COL2 NUMBER NOT NULL,    --NOT NULL
 COL3 NUMBER UNIQUE,      --ユニークキー
 COL4 NUMBER DEFAULT 1,   --デフォルト値
 COL5 NUMBER CHECK(COL5 IN (1,2,3)) --チェック
);

--外部参照表
DROP TABLE CONST2;
DROP TABLE CONST1;
CREATE TABLE CONST1 (COL1 NUMBER PRIMARY KEY);
CREATE TABLE CONST2 (
 COL1 NUMBER,
 CONSTRAINTS COL1_FK FOREIGN KEY(COL1) REFERENCES CONST1(COL1));
--参照値削除時にカスケードする場合
-- CONSTRAINTS COL1_FK FOREIGN KEY(COL1) REFERENCES CONST1(COL1) ON DELETE CASCADE);
--参照値削除時にNULL化する場合
-- CONSTRAINTS COL1_FK FOREIGN KEY(COL1) REFERENCES CONST1(COL1) ON DELETE SET NULL);

--プライマリキー追加
ALTER TABLE DEPT ADD CONSTRAINT PK_DEPTNO PRIMARY KEY(DEPTNO);

--ユニークキー追加(遅延可)
ALTER TABLE DEPT ADD CONSTRAINT DNAME_UK UNIQUE(DNAME) DEFERRABLE;

--チェック
ALTER TABLE EMP ADD CONSTRAINT SAL_CK CHECK(SAL>100) DEFERRABLE DISABLE;

--外部キー
ALTER TABLE EMP ADD CONSTRAINT DEPTNO_FK FOREIGN KEY(DEPTNO) 
 REFERENCES DEPT(DEPTNO) DEFERRABLE;

--外部キー(カスケード有)
ALTER TABLE TAB1 ADD CONSTRAINT TAB1_FK FOREIGN KEY(COL1) 
 REFERENCES TAB2(COL1) ON DELETE CASCADE;

--NOT NULL制約追加
ALTER TABLE TAB1 MODIFY (COL2 NOT NULL);
ALTER TABLE TAB1 MODIFY COL2 CONSTRAINT NN_TABLE1_COL2 NOT NULL;

--デフォルト値追加
ALTER TABLE TAB1 MODIFY (COL2 DEFAULT 1);

--制約の削除
ALTER TABLE TAB1 DROP CONSTRAINTS CK_TAB1;

--RENAME
ALTER TABLE TAB1 RENAME CONSTRAINTS <旧制約名>; TO <新制約名>;

--遅延制約の有効化(トランザクションのcommit時にチェック)
SET CONSTRAINTS DEPTNO_FK DEFERRED;

--制約を有効にするが、既存行のチェックは行わない
ALTER TABLE EMP ENABLE NOVALIDATE CONSTRAINTS SAL_CK;

--制約の無効化
ALTER TABLE  TAB1 DISABLE CONSTRAINT CK_TAB1;

--制約関連のディクショナリ
SELECT * FROM DBA_CONSTRAINTS;
SELECT * FROM DBA_INDEXES;
SELECT * FROM DBA_CONS_COLUMNS;

マニュアル

一覧(10.2)
リファレンス 10g リリース2(10.2)
SQL リファレンス 10g リリース2(10.2)
★ORACLE案件承ります