반응형
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
);
반응형