2016-12-07 79 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"); 

我嘗試過了,我沒有得到任何錯誤..

+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

你使用INSERT IGNORE,行實際上不會被插入,因爲它會導致重複密鑰。您的ID列是PRIMARY KEY,並且您已將值1存儲在數據庫中。

該語句不會生成錯誤,但會生成警告。