我想知道是否有人可以幫助我。MySQL刪除級聯
我想要使用「刪除級聯」mySQL功能,以便從「用戶詳細信息」表中刪除用戶時,它會從我的數據庫中的其他表中刪除它們的記錄。
通過閱讀Stackoverflow上的一些帖子和我在互聯網上進行的研究之後,我將表格更改爲InnoDB,並開始更改現有表格。
我已經能夠「刪除級聯外鍵」添加到我的第一個表,但是當我試圖做同樣的任何其他表,我收到以下錯誤:
#1005 - Can't create table './db369054642/#sql-30d_bd1a57.frm' (errno: 121)
但我不確定爲什麼我會收到此錯誤,因爲我更改的第一張表格沒有任何問題。
有人可以告訴我,你只能將父表連接到一個子表嗎?
父表(用戶詳情)
DROP TABLE IF EXISTS `userdetails`;
CREATE TABLE IF NOT EXISTS `userdetails` (
`userid` int(6) NOT NULL auto_increment,
`forename` varchar(20) NOT NULL,
`surname` varchar(30) NOT NULL,
`emailaddress` varchar(150) NOT NULL,
`password` varchar(200) NOT NULL,
`passwordhint` varchar(20) NOT NULL,
`subscriptionexpiration` date NOT NULL,
`salt` varchar(200) NOT NULL,
PRIMARY KEY (`userid`),
UNIQUE KEY `emailaddress` (`emailaddress`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
子表(檢測器)
DROP TABLE IF EXISTS `detectors`;
CREATE TABLE IF NOT EXISTS `detectors` (
`userid` int(6) NOT NULL,
`detectorid` int(6) NOT NULL auto_increment,
`detectorname` varchar(30) NOT NULL,
PRIMARY KEY (`detectorid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 PACK_KEYS=0 AUTO_INCREMENT=1 ;
刪除級聯SQL語句
ALTER TABLE detectors
add CONSTRAINT fk_userdetails
FOREIGN KEY (userid)
REFERENCES userdetails(userid)
ON DELETE CASCADE
通常嫌疑犯如表全/磁盤已滿等被排除在外,我想? – 2012-01-07 15:23:21
發佈您的架構和查詢請 – 2012-01-07 15:37:19
谷歌總是錯誤消息的第一大資源。當我將搜索錯誤插入搜索時,我會得到這個論壇的討論,以及其他幾個點擊 - http://forums.mysql.com/read.php?22,33999,76181#msg-76181。請爲您遇到問題的兩個表(源代碼和目標代碼)發佈'SHOW CREATE TABLE * tableName *'。另外,請發佈您嘗試使用的SQL來更改源表。 – Perception 2012-01-07 15:38:55