这是表格
CREATE TABLE IF NOT EXISTS kompas_url
(
id BIGINT(20) NOT NULL AUTO_INCREMENT,
url VARCHAR(1000),
created_date datetime,
modified_date datetime,
PRIMARY KEY(id)
)
我只是在url不存在的情况下尝试INSERT到kompas_url表
任何想法?
感谢
答案 0 :(得分:9)
您可以先SELECT
url
url
来查明它是否在那里,或者您可以使CREATE TABLE IF NOT EXISTS kompas_url
...
url VARCHAR(1000) UNIQUE,
...
)
字段唯一:
ON DUPLICATE KEY UPDATE
这将阻止MySQL插入重复的行,但是当您尝试插入时它也会报告错误。这不好 - 虽然我们可以处理错误,但可能会掩饰其他错误。为了解决这个问题,我们使用INSERT INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
ON DUPLICATE KEY UPDATE modified_date = NOW()
语法:
UPDATE
这允许我们在唯一字段中具有重复值的情况下提供modified_date
语句(这可以包括您的主键)。在这种情况下,我们可能希望使用当前日期更新INSERT IGNORE
字段。
编辑:根据~unutbu的建议,如果您不想更改重复内容,可以使用INSERT IGNORE INTO kompas_url (url, created_date, modified_date)
VALUES ('http://example.com', NOW(), NOW())
语法。这简单地如下工作:
IGNORE
这简单地将某些类型的错误转换为警告 - 最有用的是,声明存在重复唯一条目的错误。如果将关键字{{1}}放入语句中,则不会出现错误 - 只会删除查询。在复杂查询中,这也可能隐藏其他可能有用的错误,因此如果您想使用它,最好确保您的代码是正确的。