SQL:插入已存在的字段

时间:2011-02-23 09:04:57

标签: mysql sql

我有一个包含唯一字段(URL)的表。尝试在表中插入URL时最佳做法是什么:

  • 通过代码检查它是否存在 如果不是

  • ,请不要插入
  • 继续插入并不介意 如果网址是,它创建的错误 已经

  • 插入忽略

5 个答案:

答案 0 :(得分:4)

试试这个......

MySQL有一个特殊的构造。假设下面的'FirstName'列是UNIQUE:

INSERT INTO users (FirstName, RollNumber) VALUES ('Hiu', '12')
ON DUPLICATE KEY UPDATE RollNumber= '12'

'ON DUPLICATE KEY'语句仅适用于PRIMARY KEY和UNIQUE列。

答案 1 :(得分:2)

INSERT INTO `table` (`url`) VALUES ('http://example.com') ON DUPLICATE KEY UPDATE `url`='http://example.com'

http://dev.mysql.com/doc/refman/5.5/en/insert-on-duplicate.html

答案 2 :(得分:2)

插入失败时忽略错误。 select是无用的,并发用户可以在1微秒后插入一个新值,你的选择结果毫无价值。

答案 3 :(得分:0)

如果您需要该行的id用作其他地方的外键...

INSERT INTO
    `table`
    (`url`)
VALUES
    ('http://example.com')
ON DUPLICATE KEY UPDATE
    `id` = `id`

INSERT INTO
    `table`
    (`url`)
VALUES
    ('http://example.com')
ON DUPLICATE KEY UPDATE
    `id` = `id` = LAST_INSERT_ID(`id`)

要么有效 - 不确定哪个是可取的 - 可能是后者。

答案 4 :(得分:0)

也许使用REPLACE可以帮助您解决这个问题:http://dev.mysql.com/doc/refman/5.0/en/replace.html