복붙노트

[SQL] 어떻게 MySQL의에서 삭제 캐스케이드에 사용합니까?

SQL

어떻게 MySQL의에서 삭제 캐스케이드에 사용합니까?

나는 구성 요소의 데이터베이스를 가지고있다. 각 구성 요소는 특정 유형이다. 즉, 구성 요소 및 타입 사이의 다 대일 관계가있다. 내가 유형을 삭제하면, 그 유형의 외부 키를 가지고 모든 구성 요소를 삭제하고 싶습니다. 내가 잘못 아니에요 경우에, 구성 요소가 삭제 될 때 유형을 삭제합니다 삭제 된 캐스케이드입니다. 내가 설명 일을 할 수있는 방법이 있습니까?

해결법

  1. ==============================

    1.다음은 구성 요소 테이블에 포함되어 줄 것입니다.

    다음은 구성 요소 테이블에 포함되어 줄 것입니다.

    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 스토리지 엔진은 외래 키를 지원하지 않습니다.

  2. ==============================

    2.당신은 DELETE CASCADE ON로 외래 키 제약 조건을 정의해야합니다.

    당신은 DELETE CASCADE ON로 외래 키 제약 조건을 정의해야합니다.

    참고 : 당신은, 기본의 MyISAM 스토리지 엔진은 외래 키 관계를 지원하지 InnoDB 스토리지 엔진을 사용합니다.

    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
    )
    
  3. ==============================

    3.이 SQL을 사용

    이 SQL을 사용

    DELETE T1, T2 T1 FROM INNER는 T2 ON T1.key = T2.key 가입 WHERE 조건

  4. from https://stackoverflow.com/questions/511361/how-do-i-use-on-delete-cascade-in-mysql by cc-by-sa and MIT license