ツリー型の自己参照テーブルがあります。ルート要素 ID を使用してすべての子レコードを削除したい。そこで、カスケード削除で自己参照制約を追加しました。親がIDを参照する値を持っている場合に機能します。しかし、ルート要素にnullを入力したため、削除されていません。何か案が。ツリー ビューでルートを削除するときに、すべての子レコードを削除するにはどうすればよいですか。
テーブル クエリの作成
CREATE TABLE IF NOT EXISTS `_quiz` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`value` varchar(100) DEFAULT NULL,
`type` varchar(20) NOT NULL,
`parent` int(11) DEFAULT NULL,
`created` datetime NOT NULL,
`updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `parent` (`parent`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
ALTER TABLE `_quiz`
ADD CONSTRAINT `_quiz_ibfk_2` FOREIGN KEY (`parent`) REFERENCES `_quiz` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;
データを含む私のテーブル
赤く強調表示されているのはルートです。すべての子を削除する必要があることを削除するとき。しかし、それは起こっていません!
他にそれをする人はいますか?