データベースに同じデータを作成しているスクリプトがあります。それは次のようになります:テーブルをロックせずに多くのINSERTのトランザクション
START TRANSACTION;
INSERT INTO table (data);
INSERT INTO table (data);
INSERT INTO table (data);
...
COMMIT;
スクリプトは約30分間実行されます。しかし、それが動作しているとき、テーブルは他のINSERTにロックされます。スクリプトが終了するまで、別のプロセスからの行をINSERTできません。それは必要ですか?私はトランザクションを使用したいと思いますが、テーブル全体をロックすることはできません。それを行う方法はありますか?
START TRANSACTION;
INSERT INTO table (data);
COMMIT;
START TRANSACTION;
INSERT INTO table (data);
COMMIT;
...
START TRANSACTION;
INSERT INTO table (data);
COMMIT;
最もエレガントないが、それはあなたが記述状況に基づいて、あなたの問題を解決する必要があります。
を、私はそれは私が必要なものであるかわかりません。私はスクリプト全体の処理のためのトランザクションを持っていると思います。スクリプトがすべての行に挿入されているか、何も挿入されていないことを確認する必要があります。 – pronngo
あなたのコメント@Aadamに対する回答が更新されました。 –