new2つのテーブルとcurrent(両方ともinnodb)があると仮定しましょう。テーブルの内容をアトミックに切り捨てcurrent、テーブルの新しいコンテンツを入力する必要がありnewます。
考えられる方法:
- テーブル名を交換します
RENAME TABLEが、両方のテーブルがすでに作成されているため、役に立ちません。 - トランザクションを開始します。
currentテーブルを切り捨てます。selectfrom ;に挿入しcurrentます。newトランザクションをコミットします-それは大丈夫ですが、このすべてのアクションをトランザクション方式で行うことは可能ですか? - オンザフライで3番目のテーブルを作成し、橋のように使用します
ベストプラクティスは何ですか?
UPD:これは完璧に機能すると思います:RENAME TABLE current TO xxx, new TO current; xxx TO new