2011-08-01 115 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

你得到了什么错误?

我的猜测是'不存在'内部的选择是不允许的。