похоже на ON DELETE CASCADE не работает в MySQL , но что-то не так:
Способ ANSI
-- test delete cascade
CREATE TABLE t1(
id SERIAL PRIMARY KEY,
data TEXT
);
CREATE TABLE t2(
id INT PRIMARY KEY REFERENCES t1(id) ON DELETE CASCADE,
data2 TEXT
);
INSERT INTO t1 VALUES(1, 'one');
INSERT INTO t2 VALUES(1, 'first');
DELETE FROM t1;
SELECT * FROM t2; -- should have not rows - have one!
используйте это всевремя в postgres, но по какой-то причине не получается запустить его в mysql.
Я медленно учусь, есть ANSI-стандарт, postgreql, и есть MySQL.Каждый раз, когда я думаю, что я несколько оценил разницу, я не подходил близко.
MySQL Way
CREATE TABLE `t2` (
`id` BIGINT(20) UNSIGNED NOT NULL,
`data2` TEXT,
PRIMARY KEY (`id`),
CONSTRAINT `FK_t2_1` FOREIGN KEY (`id`) REFERENCES `t1` (`id`) ON DELETE CASCADE
) ENGINE = InnoDB DEFAULT CHARSET = latin1;
Для меня код, который я имею, является стандартным, имеет смысли (с точки зрения SQL) эстетически приятен, в то время как способ mysql (спасибо за помощь!) напоминает мне Visual Basic или что-то еще - это действительно безобразно, как грех, и imho неправильно просить умных людей унижать себянаписать такую вещь.
Я извиняюсь, если ругаюсь, и справедливо заслуживаю любое количество отрицательных оценок.Вы, ребята, которые пишут этот код с легкостью, уважаете меня.Я просто не хочу видеть такое бессмысленное наказание, причиненное друзьям; -)