## 테이블명, 제약조건, 컬럼명 변경하기 ##
<< 테이블 생성 >>
CREATE TABLE TBL_PRODUCT
(PDCODE VARCHAR2(10)
,PDNAME VARCHAR2(10)
,DANGA NUMBER
,CONSTRAINT TBL_PRODUCT_PDCODE_PK
PRIMARY KEY(PDCODE)
);
<< 테이블 생성 >>
CREATE TABLE TBL_PANAME
(PDCODE VARCHAR2(10)
,PANDAY DATE DEFAULT SYSDATE
,PANSU NUMBER
,CONSTRAINT TBL_PANAME_PDCODE_FK
FOREIGN KEY(PDCODE)
REFERENCES TBL_PRODUCT(PDCODE)
ON DELETE CASCADE
);
-- 테이블명 변경하기
RENAME TBL_PANAME TO TBL_PANMAE;
--제약조건의 이름 변경
ALTER TABLE TBL_PANMAE
RENAME CONSTRAINT TBL_PANAME_PDCODE_FK TO
TBL_PANMAE_PDCODE_FK;
-- 컬럼명 변경하기
ALTER TABLE TBL_PRODUCT
RENAME COLUMN DANGA TO PRICE;
-- 데이터 넣기
INSERT INTO TBL_PRODUCT VALUES
('SEK', '새우깡', 1000);
INSERT INTO TBL_PRODUCT VALUES
('KJK', '감자깡', 1500);
INSERT INTO TBL_PRODUCT VALUES
('YPR', '양파링', 2000);
-- 데이터 넣기
INSERT INTO TBL_PANMAE(PDCODE,PANSU)
VALUES('SEK', 20);
INSERT INTO TBL_PANMAE(PDCODE,PANSU)
VALUES('KJK', 30);
INSERT INTO TBL_PANMAE(PDCODE,PANSU)
VALUES('SEK', 50);
INSERT INTO TBL_PANMAE(PDCODE,PANSU)
VALUES('SEK', 10);
INSERT INTO TBL_PANMAE(PDCODE,PANSU)
VALUES('SEK', 10);
--ORA-02291: 무결성 제약조건(NEWSCOTT.TBL_PANMAE_PDCODE_FK)이 위배되었습니다-
COMMIT;
--조회
SELECT *
FROM TBL_PRODUCT;
SELECT *
FROM TBL_PANMAE;
--지우기
DELETE TBL_PRODUCT
WHERE PDCODE ='YPR';
--지울 때 주의 사항
DELETE TBL_PRODUCT
WHERE PDCODE ='SWK';
-- 1:다 관계에서는 새우깡의 판매기록이 없으면 안되니까 안된다.
그래서 다른 방법으로 한다.
-- ON DELETE CASCADE 주게 되면 판매기록도 없어진다.
ROLLBACK;
--그래서 딜리트를 하지 않고 스테이터스를 만들어서 Y 라하면 판매되어진
-- 품목으로, N라 하면 판매되어지지 않은 품목으로 하면 된다.
-- 그런데 꼭 딜리트를 하고 싶은다면, 트리거를 취급하지 않는 테이블에
-- 옮기고 나서 지운다.
-- 그래서 컬럼을 만드는 것이다.
'IT. 컴퓨터' 카테고리의 다른 글
제품 테이블, 판매 테이블 생성 및 백업 (1) | 2020.04.21 |
---|---|
STATUS 제약조건 (0) | 2020.04.20 |
[오라클] 부모 컬럼 지우면 자식 컬럼 지워짐 (0) | 2020.04.17 |
[오라클] triggger로 패스워드 바꾸기 (0) | 2020.04.17 |
[오라클] DB 모델링 요령, 트리거생성, 제약조건 종류 (0) | 2020.04.15 |