2016-12-07 5 views
0

は、私はテーブル挿入またはレコードを無視

CREATE TABLE "myTable" (
    "id" INTEGER NOT NULL, 
    "name" VARCHAR, 
    PRIMARY KEY ("id") 
) 

を持っているとのは、それは私が新しいレコードを挿入する1つのレコード

1 - James 

を持っているとしましょう。存在しない場合は挿入します。そうであれば、何もしないでください。以下のクエリは、これを行うには正しい方法であれば は私はわからない:

INSERT or IGNORE INTO myTable(id, name) VALUES(1, "Tom"); 

私はそれを試してみましたが、私はエラーを取得できませんでした..あなたは、INSERT IGNOREを使用

+0

どのSQLサーバーを使用していますか? –

+0

私はそれにタグを付けました: 'SQLite' – yaylitzis

+1

OR IGNOREはUNIQUEまたはPRIMARY KEY制約(ここでは' id'のみ)をチェックすることを知っていますか? –

答えて

0

あなたの声明は、あなたがしたいことについてはうまくいきます。ただし、SQLiteにidの値を指定する必要はありません。

INSERT INTO myTable(name) 
    VALUES('Tom'); 

この意志の自動インクリメントidので、あなたは、重複を心配する必要はありません:あなたはただ行うことができます。

+0

テーブルを作成したときに 'AUTOINCREMENT'を守らなかったとしても、自動増分が発生することはわかりませんでした。情報のためのThx! – yaylitzis

+0

@ Nat95。 。 。整数の主キーが自動インクリメントカラムと同等であることは、SQLiteの厄介なことです。他のデータベースでそれに慣れないでください! –

+0

この文は、レコードがすでに存在するかどうかをチェックしません。 –

0

、および行キーが重複するため実際には挿入されません。あなたのid列はPRIMARY KEYで、すでに値1がデータベースに格納されています。

ステートメントはエラーを生成しませんが、警告を生成します。

関連する問題