2011-08-01 5 views
4

レコードがそのドメイン名で既に存在しない場合は、レコードをテーブルに挿入します。次のSQLはこれを達成する必要がありますが、エラーが発生しています。insert - どこにも存在しません

私が最初に更新したいのは、後でコード内で複数の更新を行い、すべての更新を行う前に自分のテーブルにレコードが必要なためです。

このmySQLクエリでエラーが発生するのはなぜですか?

insert into domain (name) 
values ('domain.com.au') 
WHERE NOT EXISTS 
(
    select name 
    from domain 
    where name = 'domain.com.au' 
); 

両方のクエリがうまく分割されているが、一緒にいない場合は両方のクエリがうまく動作します。

答えて

6

データベースで処理してください。 nameにユニークなインデックスを使用すると、複製を挿入しようとするとINSERTが失敗します。

CREATE UNIQUE INDEX idx_name ON domain (name) 
+0

私は後で更新を行っているので、データベースに新しいレコードを追加したいのですが、更新を行うにはデータベースにレコードが必要です。 –

+0

あなたはあなたの質問にそれを詳しく説明できますか?レコードが存在しない場合にINSERTを行い、存在する場合はUPDATEを実行する場合は、INSERT ... ON DUPLICATE KEY UPDATEを使用します。 – Jacob

+0

私の質問が更新されました - 私は最初に更新を行っています - 更新がドメイン名を見つけられない場合は挿入したいと思います。私はこれをさらにコードの下にある私の他の更新の前に行う必要があります。 –

0

WHEREINSERT節を組み合わせることはできません。代わりにREPLACE INTOを使用してください。

0

どのようなエラーが表示されますか?

私の推測では、「どこにも存在しません」内の選択は許可されないと考えられます。

関連する問題