2010-04-07 117 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; 

謝謝你的意見

//雅各布