2011-12-16 18 views
12

関係の制約を持つテーブルが多数あります。テーブルには完全なダミーデータが含まれていますが、構造体を保持しながらテーブルからデータを切り捨てる/空にしたいと思います。制約を一時的に無効にする

毎回私はテーブルを空にしたい、私は外来キーの制約エラーを取得します。制約を一時的に無効にしてから、ダミーデータが削除されると、それを元に戻すことができます。

私はこのソリューションを試しましたが、うまくいきませんでした。一度無効にしてから切り捨てると、fk制約エラーが発生します...

//disable 
SET FOREIGN_KEY_CHECKS = 0; 


//enable 
SET FOREIGN_KEY_CHECKS = 1; 

私はMySQLを使用しています。

答えて

7

truncateを使用する場合は、ログ操作を切り捨てるようにFKを削除する必要があります。

FKを使用してdeleteを使用できますが、削除はログに記録された操作であり、時間がかかります。

+0

良い点。私はそれを知らなかった.... – user311509

3

最後の部分(FKのみの表)で始まり、他の話では参照されません。それらは切り捨てることができます。その後、あなたの方法を働かせ、削除します。適切な順序で切り捨て/削除すると、その制約に違反することはありません。あるいは、すべての拘束を落とすことができます。テーブルを切り捨てます。次に、制約を追加します。

関連する問題