如果不是EXISTS然后插入

时间:2014-04-25 12:50:21

标签: mysql sql-insert not-exists

我正在尝试向表中添加值,但不会检查该值是否已存在。这就是我到目前为止所做的:

IF NOT EXISTS (
   SELECT series.seriesName 
   FROM series 
   WHERE series.seriesName='Avengers'
) 
BEGIN 
   INSERT INTO series (seriesName) VALUES 'Avengers' 
END;

数据库是Ubuntu上的MySQL数据库

1 个答案:

答案 0 :(得分:0)

您可以在此处使用IGNORE关键字。

它可能看起来像:

INSERT IGNORE INTO series (seriesName) VALUES 'Avengers'

重要的是在seriesName字段上创建一个唯一键,因为您似乎希望它是唯一的。 当密钥值已经存在时,INSERT IGNORE不会进行插入。

如果您希望能够为未插入(已存在)的行获取ID(主键值),则可以执行以下操作:

INSERT IGNORE INTO series (seriesName) VALUES 'Avengers'
    ON DUPLICATE KEY UPDATE seriesID= LAST_INSERT_ID(seriesID) 

然后,无论行是否插入,您都可以使用LAST_INSERT_ID()函数获取ID。