2017-07-19 9 views
0

は、私は、MySQLのような重複したレコードを挿入避けるために、トリガーに「NOT EXISTS WHERE。INSERT INTO」を使用することができます - 私は、MySQLのトリガーでこの文を使用すると、私はエラープロンプトを得た重複するレコードを挿入しないように、MySQLのトリガーで「存在しない場所に挿入する」を使用できますか?

INSERT INTO `user` (`id`, `name`) VALUES (1, 'John') WHERE NOT EXISTS (SELECT * FROM `user` WHERE `id` = 1); 

と作成に失敗しました。引き金。

エラーコード:1064 SQL構文にエラーがあります。 EXISTS、NOT近く使用する権利構文」のMySQLサーバのバージョンに対応するマニュアルを確認してくださいラインで(userid = 1 SELECT * FROM)6

答えて

1

あなたはIGNOREを使用することができます。

INSERT IGNORE `user` (`id`, `name`) VALUES (1, 'John') 

行がすでに存在する場合、エラーを挿入したりスローしたりしません。

重複しているかどうかを知るには、テーブルのキーに基づいていることを知る必要があります。

+0

はどうもありがとうございました!試してみてくださいそれは私の問題を完全に解決します。 – Benson

1

この

INSERT INTO `user` (`id`, `name`) SELECT 1, 'John' FROM dual WHERE NOT EXISTS (SELECT 1 FROM `user` WHERE `id` = 1)

+0

ありがとうございます!これは私の問題を解決する良い方法です。 – Benson

関連する問題