Подтвердить что ты не робот

Как использовать для удаления каскада в mysql?

У меня есть база данных компонентов. Каждый компонент имеет определенный тип. Это означает, что между компонентом и типом существует взаимосвязь "один-к-одному". Когда я удаляю тип, я хотел бы удалить все компоненты, у которых есть внешний ключ этого типа. Но если я не ошибаюсь, удаление каскада удалит тип при удалении компонента. Есть ли способ сделать то, что я описал?

4b9b3361

Ответ 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

Вы должны определить ограничения внешнего ключа как 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
)

Ответ 3

используйте этот sql

DELETE T1, T2 FROM T1 INNER JOIN T2 ON T1.key = T2.key Условие WHERE