2010-04-07 133 views
1

我想在mysql数据库中使用ON CASCADE DELETE,但是我无法让它工作。 这里是我的代码:mysql删除级联不起作用

CREATE TABLE sometable 
(
testId CHAR(43), 
blocked BOOL, 
PRIMARY KEY(testId) 
); 

CREATE TABLE p 
( 
testId CHAR(43), 
phrase text, 
source text, 
FOREIGN KEY (testId) REFERENCES sometable (testId) on delete cascade 
); 

CREATE TRIGGER sometable_insert BEFORE INSERT ON `sometable` FOR EACH ROW SET NEW.`testId` =UUID(); 

我然后执行INSERT INTO sometable,这将产生一个UUID。 我拿这个UUID并将其插入表p。插入到p(testId,phrase,source)值中('07616f60-424f-11df-871a-b98e9','fun','test');

在某些表格中对行进行删除时,表p中没有任何操作发生。 我错过了什么或者我做错了什么

+1

您是否使用InnoDB的? – nickf 2010-04-07 14:38:48

+0

也许你必须在p表中的testId列上定义一个索引。 – 2010-04-07 14:43:15

回答

1

好的,找到了解决方案。我必须指定类型的InnoDB是这样的:

CREATE TABLE sometable 
(
testId CHAR(43), 
blocked BOOL, 
PRIMARY KEY(testId) 
) type=innodb; 

谢谢你的意见

//雅各布