制約スクリプト
※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください--テーブル作成時に制約を付与する(制約名は自動生成) 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)