반응형
mysql에서 캐스케이드를 삭제할 때 어떻게 사용합니까?
저는 구성요소 데이터베이스를 가지고 있습니다.각 구성요소는 특정 유형입니다.이는 구성 요소와 유형 간에 다대 일 관계가 있음을 의미합니다.타입을 삭제할 때 해당 타입의 외국키가 있는 구성요소를 모두 삭제하고 싶습니다.하지만 제가 착각하지 않았다면, cascade delete는 컴포넌트가 삭제되었을 때 타입이 삭제됩니다.제가 설명한 대로 할 수 있는 방법이 없을까요?
구성요소 표에 포함할 내용은 다음과 같습니다.
CREATE TABLE `components` (
`id` int(10) unsigned NOT NULL auto_increment,
`typeId` int(10) unsigned NOT NULL,
`moreInfo` VARCHAR(32),
-- etc
PRIMARY KEY (`id`),
KEY `type` (`typeId`)
CONSTRAINT `myForeignKey` FOREIGN KEY (`typeId`)
REFERENCES `types` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
)
InnoDB 스토리지 엔진을 사용해야 합니다. 기본 MyISAM 스토리지 엔진은 외부 키를 지원하지 않습니다.
이 sql 사용
T1.key = T2.keywhere 조건에서 T1, T2를 T1 내부 조인 T2에서 삭제합니다.
외부 키 제약 조건을 ON DELETE CASCADE로 정의해야 합니다.
참고: InnoDB 스토리지 엔진을 사용해야 합니다. 기본 MyISAM 스토리지 엔진은 외부 키 관계를 지원하지 않습니다.
CREATE TABLE `table2` (
`id` int(11) NOT NULL auto_increment,
`name` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `ids` (`ids`)
CONSTRAINT `foreign` FOREIGN KEY (`ids`)
REFERENCES `table2` (`ids`) ON DELETE CASCADE ON UPDATE CASCADE
)
Step 1. Create the buildings table:
CREATE TABLE buildings (
building_no INT PRIMARY KEY AUTO_INCREMENT,
building_name VARCHAR(255) NOT NULL,
address VARCHAR(255) NOT NULL
);
Step 2. Create the rooms table:
CREATE TABLE rooms (
room_no INT PRIMARY KEY AUTO_INCREMENT,
room_name VARCHAR(255) NOT NULL,
building_no INT NOT NULL,
FOREIGN KEY (building_no)
REFERENCES buildings (building_no)
ON DELETE CASCADE
);
Notice that the ON DELETE CASCADE clause at the end of the foreign key constraint
definition.
언급URL : https://stackoverflow.com/questions/511361/how-do-i-use-on-delete-cascade-in-mysql
반응형
'programing' 카테고리의 다른 글
Microsoft SQL Server 2000의 MySQL LIMIT 절 에뮬레이트 (0) | 2023.09.06 |
---|---|
PSCustomObject가 아닌 원시 형식(예: String)을 반환하도록 Select-Object를 가져오는 방법은 무엇입니까? (0) | 2023.09.06 |
오류: SQLSTATE[HY000] [2002] 대상 머신이 적극적으로 거부하여 연결할 수 없음 (0) | 2023.09.06 |
ajax를 통해 FormData 개체와 추가 매개 변수 전송 (0) | 2023.09.06 |
장고: 색인 작성: 비고유, 다중 열 (0) | 2023.09.06 |