외래키 제한 때문에 삽질하다가 찾아낸 sql 샘플
참조 : http://www.mysqltutorial.org/mysql-on-delete-cascade/
CREATE TABLE buildings ( building_no INT(11) NOT NULL AUTO_INCREMENT, building_name VARCHAR(255) NOT NULL, address VARCHAR(355) NOT NULL, PRIMARY KEY (building_no) ) ENGINE=INNODB; CREATE TABLE rooms ( room_no INT(11) NOT NULL AUTO_INCREMENT, room_name VARCHAR(255) NOT NULL, building_no INT(11) NOT NULL, PRIMARY KEY (room_no), KEY building_no (building_no), CONSTRAINT rooms_ibfk_1 FOREIGN KEY (building_no) REFERENCES buildings (building_no) ON DELETE CASCADE ) ENGINE=INNODB; INSERT INTO buildings(building_name,address) VALUES('ACME Headquaters','3950 North 1st Street CA 95134'), ('ACME Sales','5000 North 1st Street CA 95134') INSERT INTO rooms(room_name,building_no) VALUES('Amazon',1), ('War Room',1), ('Office of CEO',1), ('Marketing',2), ('Showroom',2); DELETE FROM buildings WHERE building_no=2 SELECT * FROM rooms; SELECT * FROM buildings; -- 이미 존재하는 테이블에 외래키를 설정하는 경우 ALTER TABLE rooms ADD CONSTRAINT constraint_name FOREIGN KEY foreign_key_name(columns) REFERENCES parent_table(columns) ON DELETE RESTRICT ON UPDATE CASCADE
1. 카페 24의 sql server 버전이 낮았던 탓인지 테이블에 innoDB 가 적용이 안되고 있다는 오류가 계속 나는 걸 보지 못하고 혼자 삽질..아.
2. 다른 삽질 또 발견 저기서 부모 테이블 (buildings ) 의 building_no 즉 primary key 는 대부분 데이터 타입이 INT 인데
저걸 UNSIGNED 를 걸면 자식테이블 ( rooms ) 에서 외래키 설정이 안된다.
저거 때문에 또 한시간 삽질했음. UNSIGNED 를 하는 이유 뭐 어엣건 했다..겨우
'코드 > PHP' 카테고리의 다른 글
[PHP]Query 결과 재사용, 인덱스 리셋 (0) | 2015.08.13 |
---|---|
[PHP] 특수한 상수들 (0) | 2015.08.07 |
[정규표현식]IP 주소찾기 (0) | 2015.07.30 |
port 번호 모음 (0) | 2015.07.29 |
[MySql] 외래키. (0) | 2015.07.16 |