STATUS 제약조건
본문 바로가기
IT. 컴퓨터

STATUS 제약조건

by 솔기잇 2020. 4. 20.

## STATUS 제약조건 ##

 

1 : 관계 테이블에서는 부모테이블에 존재하는 행은

   Foreign Key 인해서 삭제가 불가하다.

   (,on delete cascade 옵션을 사용하지 않을 )

   update 효과를 (delete 하는 효과) 가지도록 한다.

   , 특정 컬럼을 하나 생성해서 사용중인 행인지,

   사용하지 않은 행인지 구분을 하도록 한다.

 

 

<< 테이블 생성 >>

CREATE TABLE TBL_PRODUCT2

(PDCODE     VARCHAR2(10)

,PDNAME     VARCHAR2(10)

,DANGA       NUMBER

,STATUS      NUMBER(1) DEFAULT 1 -- 1: 사용중 , 0: 사용불가

,CONSTRAINT TBL_PRODUCT2_PDCODE_PK

                    PRIMARY KEY(PDCODE)

,CONSTRAINT TBL_PRODUCT2_STATUS_CK

            CHECK( STATUS IN (0,1) )

                  --STATUS = 0 OR STATUS = 1)                   

);

 

<< 테이블 생성 >>

CREATE TABLE TBL_PANMAE2

(PDCODE     VARCHAR2(10)

,PANDAY      DATE DEFAULT SYSDATE

,PANSU        NUMBER

,CONSTRAINT TBL_PANMAE2_PDCODE_FK

                    FOREIGN KEY(PDCODE)

                    REFERENCES TBL_PRODUCT2(PDCODE) 

);

 

 

--삭제시 삭제불가

DROP TABLE TBL_PRODUCT2;

 =>ORA-02449: 외래 키에 의해 참조되는 고유/기본 키가 테이블에 있습니다

 

--삭제시 삭제가능

DROP TABLE TBL_PANMAE2;

 

*************************************************************

*************************************************************

 

 

INSERT INTO TBL_PRODUCT2(PDCODE,PDNAME,DANGA)

VALUES ('SWK', '새우깡', 1000);

INSERT INTO TBL_PRODUCT2(PDCODE,PDNAME,DANGA)

VALUES ('KJK', '감자깡', 1500);

INSERT INTO TBL_PRODUCT2(PDCODE,PDNAME,DANGA)

VALUES ('YPR', '양파링', 2000);

 

 

 

 

COMMIT;

 

 

INSERT INTO TBL_PANMAE2(PDCODE,PANSU)

VALUES('SWK', 20);

INSERT INTO TBL_PANMAE2(PDCODE,PANSU)

VALUES('KJK', 30);

INSERT INTO TBL_PANMAE2(PDCODE,PANSU)

VALUES('SWK', 50);

INSERT INTO TBL_PANMAE2(PDCODE,PANSU)

VALUES('SWK', 10);

INSERT INTO TBL_PANMAE2(PDCODE,PANSU)

VALUES('BBR', 15);

-- ORA-02291: 무결성 제약조건(NEWSCOTT.TBL_PANMAE2_PDCODE_FK)

위배되었습니다- 부모 키가 없습니다

 

 COMMIT;

 

 

--조회

SELECT *

FROM TBL_PRODUCT2

WHERE STATUS = 1;

 

 

SELECT *

FROM TBL_PANMAE2;

 

 

SELECT *

FROM TBL_PANMAE2

WHERE PDCODE IN

          -- 제품테이블에서 취금하는 품목만 제품코드를 보고자 한다.

(SELECT PDCODE

           FORM TBL_PRODUCT2

           WHERE STATUS = 1)

 

 

--업데이트 (사용중인 제품만 업데이트를 이용하면 구지 지우지 않아도 된다.)

UPDATE TBL_PRODUCT2 SET STATUS = 1 

WHERE PDCODE = 'SWK';

 

COMMIT;


close