作者herman602 (奸商)
看板Database
標題[問題] SET NULL 問題
時間Sat Aug 4 15:15:48 2012
我使用的是MySQL InnoDB
目前有兩個資料表
announcement
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| class | int(11) | YES | MUL | NULL | |
| subject | varchar(50) | NO | | NULL | |
| content | varchar(100) | NO | | NULL | |
| start_date | date | NO | | NULL | |
| end_date | date | NO | | NULL | |
| contact_id | int(11) | YES | MUL | NULL | |
+------------+--------------+------+-----+---------+----------------+
announcement_class
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| description | varchar(50) | NO | UNI | NULL | |
+-------------+-------------+------+-----+---------+----------------+
CONSTRAINT `announcement_ibfk_4` FOREIGN KEY (`
class`) REFERENCES
`announcement_class` (`id`) ON DELETE SET NULL ON UPDATE CASCADE,
CONSTRAINT `announcement_ibfk_3` FOREIGN KEY (`contact_id`) REFERENCES
`staff` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8
但是我這樣刪除nannouncement_class的時候
announcement裡面若有record參照到被刪除的nannouncement_class
理應上class要被設為NULL
但是我實際執行起來
那些有被參照到的record也被一併連鎖刪除了
請問是什麼問題呢?
謝謝!
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.68.58.62
推 TeemingVoid:我遇過類似的的怪問題,請先執行: 08/04 21:56
→ TeemingVoid:show create table announcement_class; 08/04 21:56
→ TeemingVoid:看看有沒有針對同一欄位重複設定了foreign key。 08/04 21:57
您好
出現了這些...
| announcement_class | CREATE TABLE `announcement_class` (
`id` int(11) NOT NULL auto_increment,
`description` varchar(50) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `description` (`description`)
) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8 |
※ 編輯: herman602 來自: 219.68.58.62 (08/05 01:22)
已解決
肇因於前端SQL statement的問題...
導致讓我覺得被刪除了@@!
謝謝TeemingVoid大大~~~~!!
※ 編輯: herman602 來自: 219.68.58.62 (08/05 02:02)
推 TeemingVoid:兩三回合水球就發現問題點, 原PO絕頂聰明反應真快! ^^ 08/05 02:09