制約スクリプト
※コピーすると改行が抜ける場合はソースをダブルクリックして強調表示を外してからコピーしてください1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 | --テーブル作成時に制約を付与する(制約名は自動生成) 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)