我有一个包含唯一字段(URL)的表。尝试在表中插入URL时最佳做法是什么:
通过代码检查它是否存在 如果不是
继续插入并不介意 如果网址是,它创建的错误 已经
插入忽略
答案 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?