我在刪除某些行和關係時清理我的數據庫時出現問題。試圖將外鍵與觸發器結合起來
CREATE TABLE IF NOT EXISTS `cms_users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`first_name` varchar(50) DEFAULT NULL,
`last_name` varchar(50) DEFAULT NULL,
`id_account_type` smallint(2) unsigned NOT NULL,
PRIMARY KEY (`id`)
);
以上是一些用戶。還有那些用戶的孩子,他們都存儲在其他表:
CREATE TABLE IF NOT EXISTS `cms_users_relations` (
`id_user` int(10) unsigned NOT NULL,
`id_parent` int(10) unsigned DEFAULT NULL,
UNIQUE KEY `id_user` (`id_user`),
KEY `constraint_9` (`id_parent`)
);
ALTER TABLE `cms_users_relations`
ADD CONSTRAINT `constraint_8` FOREIGN KEY (`id_user`) REFERENCES `cms_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
ADD CONSTRAINT `constraint_9` FOREIGN KEY (`id_parent`) REFERENCES `cms_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
的問題是,當我從cms_users刪除父所有的孩子也應該被刪除,但他們沒有。我創建了一個TRIGER用於此目的,但不這樣做的工作:
DELIMITER //
CREATE TRIGGER `delete_user` AFTER DELETE ON `cms_users_relations`
FOR EACH ROW BEGIN
DELETE FROM cms_users WHERE OLD.id_user = cms_users.id;
END
//
DELIMITER ;
它看起來像MySQL服務器不要打擾我們刪除的用戶,然後刪除外鍵關係,那麼,我們應該把觸發器...
任何想法?
*** SQL ***只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......很多東西都是特定於供應商的 - 所以我們真的需要知道什麼* *您正在使用的數據庫系統**(以及哪個版本)(請相應地更新標籤).... –
我同意,我知道但我忘了指定。 –