DB/SQL

foreign key의 설정에 따른 update, delete 영향

씩씩한 IT블로그 2023. 6. 21. 01:11
반응형

foreign 설정 종류

1. ON DELETE/UPDATE CASCADE : 부모 테이블의 값이 지워지면(업데이트되면) 자식 테이블의 해당 row도 지워(업데이트)진다

CREATE TABLE foreign_key_test ( 
id int NOT NULL,
content varchar(2048) DEFAULT NULL, 
user_id int DEFAULT NULL, 
product_id int unsigned NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (product_id) REFERENCES product (id) on delete cascade
);

 

2. ON DELETE/UPDATE SET NULL : 부모 테이블의 값이 지워지면(업데이트되면) 자식 테이블의 해당 row의 foreign key 컬럼에 해당하는 값이 지워진다.

CREATE TABLE foreign_key_test ( 
id int NOT NULL,
content varchar(2048) DEFAULT NULL, 
user_id int DEFAULT NULL, 
product_id int unsigned NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (product_id) REFERENCES product (id) on delete set null
);

 

3. ON DELETE/UPDATE SET DEFAULT : 부모 테이블의 값이 지워지면(업데이트되면) 자식 테이블의 해당 row의 foreign key 컬럼에 해당하는 값은 기존에 설정한 default값이 된다.

CREATE TABLE foreign_key_test ( 
id int NOT NULL,
content varchar(2048) DEFAULT NULL, 
user_id int DEFAULT NULL, 
product_id int unsigned NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (product_id) REFERENCES product (id) on delete set default
);

 

4. ON DELETE/UPDATE RESTRICT : 참조하고있는 자식 클래스의 값이 있다면, 부모클래스의 특정 row를 삭제할 수 없다.(default 값)

CREATE TABLE foreign_key_test ( 
id int NOT NULL,
content varchar(2048) DEFAULT NULL, 
user_id int DEFAULT NULL, 
product_id int unsigned NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (product_id) REFERENCES product (id) on delete RESTRICT
);
반응형