2009-04-21 8 views
1

MySQLは、トランザクションの終了がまだ実装されていない限り、制約を受けていないようです。もしそうなら、2つの子レコードで親を切り替える最良の方法は何ですか?2つのレコードの外部キー値(一意)の置換

たとえば、各ユーザーがアイテムを配置できるUIスロットがある場合、スロット内のアイテムを切り替えるにはどうすればいいのですか?スロットIDはアイテムテーブルのFKでアイテムのitemId列とslotId列に一意のインデックスがあります表?

トランザクションでSET FOREIGN_KEY_CHECKS = 0と3つの更新を使用するよりも良い方法はありますか?

[編集] SlotIdはnullではありません。アイテムは常にいくつかのスロットにある必要があります。つまり、nullableとして設定すると、実装の詳細を簡単にするために意味の正確性と重要な安全性のチェックを放棄します。 。

答えて

0

私は同様の問題in this postを記述しました。

この場合、外部キー制約を無効にする必要がないので、列をNULL 'にすることは可能性が低いと思われます。

1

更新する列がNULL可能である場合は、それらをヌルにしてから、更新または削除して挿入します。

関連する問題