0

空のテーブルが「外部キー制約に失敗しました」をスローする方法は? 「listini」と「listinoprezzi」の 2 つのテーブルがあり、2 番目のテーブルには最初のテーブルへの外部参照があります。ただし、「listinoprezzi」は空で、「listini」を切り捨てようとすると、次のようになります。

#1701 - Cannot truncate a table referenced in a foreign key constraint (`listiniprezzi`, CONSTRAINT `listiniprezzi_ibfk_4` FOREIGN KEY (`listino`) REFERENCES `listini` (`id`))

それはどのように可能ですか?

4

1 に答える 1

0

TRUNCATE TABLE構文の下に記載されているとおり(強調を追加):

高いパフォーマンスを実現するために、データを削除する DML メソッドをバイパスします。したがって、ロールバックできず、ON DELETEトリガーが起動されず、親子外部キー関係を持つテーブルに対して実行できません。InnoDB

TRUNCATE TABLEは に似ていDELETEますが、DML ステートメントではなく DDL ステートメントとして分類されます。DELETEMySQL 5.5 とは次の点で異なります。

[ deletia ]

  • TRUNCATE TABLEテーブルを参照する他のテーブルからの制約InnoDBがある場合、そのテーブルでは失敗します。FOREIGN KEY同じテーブルの列間の外部キー制約は許可されています。
于 2013-04-30T10:25:22.980 に答える