存在しない行を追加する場合に以下のSQLで追加できました。
INSERT INTO table(colum1,colum2) SELECT * FROM (SELECT 'data1','data2') AS TMP WHERE NOT EXISTS (SELECT * FROM table WHERE colum1 = 'data1');
ただ、これだと存在していても以下のようにエラーにならない気がします。
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
0になっているのでそちらを確認するべきでしょうか?
SELECT+Where条件で行数をカウントして0の場合のみInsertする方法も考えましたが大量のアクセス時にSelectからInsertまでのタイム差で他の処理が同じデータをInsertしないかを危惧しています。(また、特定条件で利用では重複データもあり得るので、ユニークが使えない状況となっています。)
この場合にSelectからInsertまでの間はテーブルロックすることも考えれますが、スケールが落ちるのでは無いかと危惧しています。
通常、どのような処理を実装すべきかご教授願います。
よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/18 11:48
2017/05/18 11:50
2017/05/19 00:26
2017/05/20 14:33