MySQL - каскад удаления - PullRequest
       2

MySQL - каскад удаления

1 голос
/ 17 февраля 2011

У нас есть несколько таблиц с внешними ключами. Я проверил их операторы CREATE, и нигде не было включено «ON DELETE CASCADE».

Я хотел бы выяснить, возможно ли удалить Parent и все связанные строки в Child с предоставлением некоторой команды во время удаления строки в Parent.

Возможно

Ответы [ 2 ]

0 голосов
/ 17 февраля 2011

Если в таблице нет ON DELETE CASCADE, вы можете попробовать реализовать ее с помощью триггера AFTER DELETE.

В противном случае ON DELETE CASCADE может быть легко определено.Тем не менее, будьте осторожны, особенно если у дочерней таблицы есть несколько ограничений.

0 голосов
/ 17 февраля 2011

Это допустимая опция , приведенный ниже код работает должным образом.

DROP TABLE IF EXISTS TestFoo;
CREATE TABLE TestFoo
(
    Foo INT NOT NULL AUTO_INCREMENT,
    PRIMARY KEY(Foo)
) ENGINE=InnoDB;
DROP TABLE IF EXISTS TestBar;
CREATE TABLE TestBar
(
    Bar INT NOT NULL AUTO_INCREMENT,
    Foo INT,
    PRIMARY KEY(Bar),
    FOREIGN KEY bar_foo (Foo)
      REFERENCES TestFoo (Foo)
      ON DELETE CASCADE
) ENGINE=InnoDB;

INSERT TestFoo VALUES (NULL),(NULL),(NULL),(NULL);
INSERT TestBar(Foo) VALUES (1),(2),(3),(4);
SELECT * FROM TestBar;
DELETE FROM TestFoo WHERE Foo = 2 OR Foo = 3;
SELECT * FROM TestBar;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...