-- 제약조건 확인
SELECT *
FROM ALL_CONSTRAINTS
WHERE TABLE_NAME = 'PCBOPM03'
-----------------------------
-- PCBOPM02 수정 쿼리
-----------------------------
-- 제약조건 삭제
ALTER TABLE PCBOPM02 DROP CONSTRAINT SYS_C0021685 CASCADE;
-- 컬럼 추가
ALTER TABLE PCBOPM02
ADD
(
PO_VER VARCHAR2(3)
);
COMMENT ON COLUMN PCOS_NEW.PCBOPM02.PO_VER IS '개정차수';
--PK 삭제
ALTER TABLE PCBOPM02 DROP CONSTRAINT SYS_C0021685;
-- INDEX 생성
CREATE UNIQUE INDEX PK_PCBOPM02 ON PCBOPM02 (PO_NUM, PO_VER);
-- PK 생성
ALTER TABLE PCBOPM02 ADD (
CONSTRAINT PK_PCBOPM02 PRIMARY KEY (PO_NUM, PO_VER)
);
-----------------------------
-- PCBOPM03 수정 쿼리
-----------------------------
ALTER TABLE PCBOPM03
ADD
(
PO_VER VARCHAR2(3)
);
COMMENT ON COLUMN PCOS_NEW.PCBOPM03.PO_VER IS '개정차수';
CREATE UNIQUE INDEX PK_PCBOPM03 ON PCBOPM03 (PO_NUM, MLB_CODE, PPI_CODE, PO_VER);
ALTER TABLE PCBOPM03 ADD(
CONSTRAINT PK_PCBOPM03 PRIMARY KEY (PO_NUM, MLB_CODE, PPI_CODE, PO_VER)
);
ALTER TABLE PCOS_NEW.PCBOPM03 ADD (
FOREIGN KEY (PO_NUM, PO_VER)
REFERENCES PCOS_NEW.PCBOPM02 (PO_NUM, PO_VER)
ON DELETE CASCADE);
--PK추가 하기
ALTER TABLE 테이블이름 ADD CONSTRAINT 인덱스_이름 PRIMARY KEY(field1, field2);
(인덱스_이름 이 제약조건 이름인데, PK 는 오라클이 자동으로 인덱스 생성을 해 주며 이 제약조건 이름으로 인덱스를 생성한다)
-- PK 제거하기
ALTER TABLE 테이블이름 DROP primary key cascade;
--일반적인 제약 조건 삭제..
ALTER TABLE 테이블이름 DROP 제약조건_이름;
(CASCADE 옵션은 제약조건이 걸린 다른 모든 참조 조건들 모두 에게 영향을 준다. 즉, 여기서는 drop 했으므로 참조 조건(다른 테이블의 FK 등에 대한)을 모두 다 삭제 시켜 버린다.)
데이터 딕셔너리 에서 PK 설정 이 잘 되었는지 컬럼 타입 확인..
SQL> l
1 SELECT a.constraint_type as c, a.constraint_name constnm, b.column_name
2 FROM user_constraints a, user_cons_columns b
3 WHERE a.table_name = '테이블 이름' AND a.constraint_name = b.constraint_name ;
뒤에 조건절 AND a.constraint_type = 'P'
를 붙이면 PK 만 확인....,
P 는 PK
R 은 Reference.... FK
U 는 Unique
C 는 Check ( null 등을 포함한 여러 제약 조건이 걸렸다 고 이해 함 될 듯...)
사실 위 쿼리는 급조 된거고... user_constraints a, user_cons_columns b 이 두 테이블로 활용 하면 될듯...
[참고]
1. 일반 필드 수정은...
http://blog.naver.com/neat98/120022441120
2. 데이터 딕셔너리...
http://blog.naver.com/neat98/120022848499
3. 외래키는..
CREATE TABLE 테이블이름
(
col1 number(4),
col2 varchar2(100),
...
CONSTRAINT FK_외래키명 FOREIGN KEY( col1 ) REFERENCES 부모_테이블명(부모_테이블_필드)
);