私は、再帰的PARENT_IDで自己参照MySQLのテーブルを持っている:テスト中自己参照MySQLテーブルを空にするにはどうすればよいですか?
CREATE TABLE `recursive` (
`id` int(11) NOT NULL auto_increment,
`parent_id` int(11) default NULL,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `data_categorysource_parent_id` (`parent_id`),
CONSTRAINT `parent_id_refs_id_627b4293`
FOREIGN KEY (`parent_id`) REFERENCES `data_categorysource` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
、私はそれを空にしたいが、TRUNCATEは失敗します。
TRUNCATE `recursive`
/* SQL Error: Cannot delete or update a parent row: a foreign key
constraint fails...
私は現在、手動ですべてのレコードを削除する必要があり、ツリーの下端から上に向かって作業を開始します。これは小さな木でも厄介です。
簡単な方法はありますか?私はDROP
テーブルを作成することはできませんし、他のテーブルが参照するように簡単に再作成します(私は既にそれらを切り捨てて、そこにデータの整合性の問題はないはずです)。
(Tとして(のtable_1からt_DateとしてMAX(日付(table_1_TIME))を選択します)からT.t_Dateを選択)のtable_1から削除あなたはそれを働かせるでしょう。しかし、あなたが自己参照行を持っているなら、あなたは優雅な選択肢がほとんどありません:http://bugs.mysql.com/bug.php?id=7412。一時的にforeign_keysを無効にする方が最適です。 –
oracleのほうが、トランザクションがコミットするまでconstraistsのチェックに惑わされないように、oracleがうまくいくことはほとんどありません。 –