-- 제약조건 확인
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 부모_테이블명(부모_테이블_필드)

);

+ Recent posts