programing

mysql에서 캐스케이드를 삭제할 때 어떻게 사용합니까?

subpage 2023. 9. 6. 22:05
반응형

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

반응형