级联失败"/>
mysql级联失败
类似于
ON DELETE CASCADE not working in 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方式
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;
对我来说,我的代码是ansi标准,非常有意义,并且(就SQL而言)美观,而mysql方式(感谢帮助!)让我想起Visual Basic或其他东西 – 它真的很难看作为罪和imho,要求聪明的人贬低自己写这样的东西是错误的.
如果咆哮,我道歉,并且应该得到任何数量的负面评价.你们轻松编写这些代码的人对我非常尊重.我只是讨厌在朋友身上看到这种毫无意义的惩罚;-)
更多推荐
mysql级联失败
发布评论