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