2011-08-01 155 views
4

我想插入一個記錄到表中,如果記錄不存在與該域名已經存在。以下SQL應該可以達到這個目的,但會出現錯誤。插入 - 如果不存在

我想先做更新的原因是因爲我稍後在我的代碼中執行多個更新,並且在執行所有更新之前首先需要我的表中的記錄。

爲什麼我在這個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

你得到了什麼錯誤?

我的猜測是'不存在'內部的選擇是不允許的。