DB/MySQL

[MySQL] 외래키(FOREIGN KEY) 지정

야곰야곰+책벌레 2021. 8. 30. 09:58
728x90
반응형

MySQL 외래 키(FOREIGN KEY) 지정 시 UPDATE/DELETE 옵션 지정 방법

 

RESTRICT 개체를 변경/삭제할 때 다른 개체가 참조하고 있을 경우 변경/삭제가 취소됨.
CASCADE 개체를 변경/삭제할 때 다른 개체가 참조하고 있을 경우 함께 변경/삭제 됨.
NO ACTION MySQL에서는 RESTRICT와 동일
SET NULL 개체를 변경/삭제할 때 다른 개체가 참조하고 있을 경우 참조하고 있는 값을 NULL로 설정 됨.

실제 외래키 설정 예)

-- CREATE MACHINE DOMAIN TABLE
DROP TABLE IF EXISTS `equipmenttbl`;
CREATE TABLE `equipmenttbl` (
	equipID VARCHAR(8) NOT NULL,
    mcdomainID VARCHAR(92) NOT NULL,
    clidomainID VARCHAR(92) NOT NULL,
    equipName VARCHAR(128),
	equipDesc VARCHAR(128),
	PRIMARY KEY(equipID),
    FOREIGN KEY (mcdomainID) REFERENCES mcdomaintbl(mcdomainID) ON UPDATE CASCADE ON DELETE RESTRICT,
    FOREIGN KEY (clidomainID) REFERENCES clidomaintbl(clidomainID) ON UPDATE CASCADE ON DELETE RESTRICT
);

-- CREATE MACHINE DOMAIN TABLE
DROP TABLE IF EXISTS `equipmenttbl`;
CREATE TABLE `equipmenttbl` (
	equipID VARCHAR(8) NOT NULL,
    mcdomainID VARCHAR(92) NOT NULL,
    clidomainID VARCHAR(92) NOT NULL,
    equipName VARCHAR(128),
	equipDesc VARCHAR(128),
	CONSTRAINT PK_equipTBL PRIMARY KEY(equipID),
    CONSTRAINT FK_mcdomainID FOREIGN KEY (mcdomainID) REFERENCES mcdomaintbl(mcdomainID) ON UPDATE CASCADE ON DELETE RESTRICT,
    CONSTRAINT FK_clidomainID FOREIGN KEY (clidomainID) REFERENCES clidomaintbl(clidomainID) ON UPDATE CASCADE ON DELETE RESTRICT
);

 

728x90
반응형

'DB > MySQL' 카테고리의 다른 글

[MySQL] SELECT 결과 INSERT 하기  (0) 2021.09.02
[MySQL] AUTO_INCREMENT 설정 및 초기화  (0) 2021.09.01
[MySQL] LIKE 구문  (0) 2021.06.04
[MySQL] SHOW TABLES 테이블 정보 확인  (0) 2021.05.25
[MySQL] STRCMP - 문자열 비교  (0) 2021.05.03