2011-02-08 20 views
0

MySQLデータベーステーブルに行を追加する必要がありますが、その行が存在しない場合に限ります。私のデータベースサーバーがダウンしたので、私はこれをテストすることはできませんが、期待どおりに動作しますか?行が存在しないかどうか確認する[MySQL]

INSERT INTO `blocks` (`block_file`,`settings_group`) 
VALUES ('announcements','announcement_settings') 
WHERE NOT EXISTS (SELECT `block_file`,`settings_group` 
        FROM `blocks` 
        WHERE `block_file`='announcements' AND `settings_group`='announcement_settings') 

サウンドロジックのようです。これは有効なクエリですか、これを行う良い方法がありますか?

+0

SQL Serverでは、そのようなアプローチで競合状態が発生します。これがMySQLにも当てはまるかどうかは不明です。それはこの特定のクエリだけですか、それらの2つの列に一意性を強制したいのですか? –

+1

mysqlと同じです - テーブルから選択している間はテーブルを変更することはできません –

答えて

3

(block_file,settings_group)列にUNIQUEインデックスを作成するだけで、MySQLはこれらの値を複製する行を挿入させません。

質問に答える:いいえ、全く動作しません。

+1

複数のレコードを挿入する必要がある場合は、IGNOREキーワードを使用するだけですので、重複する行を挿入しようとするとエラーが警告として扱われます。 sintaxを確認してください。http://dev.mysql.com/doc/refman/5.0/es/insert.html – fiunchinho

+0

ありがとう!ちょうど期待どおりに動作し、きれいになります。 – Steven

関連する問題