2024-04-27 21:05:34 发布
网友
这是桌子
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不存在的情况下插入kompas_url表
知道吗?
谢谢
您可以通过url来确定它是否首先在其中,也可以使url字段唯一:
url
CREATE TABLE IF NOT EXISTS kompas_url ... url VARCHAR(1000) UNIQUE, ... )
这将阻止MySQL插入重复的行,但在尝试插入时也会报告错误。这是不好的,虽然我们可以处理错误,它可能掩盖其他人。为了解决这个问题,我们使用ON DUPLICATE KEY UPDATE语法:
ON DUPLICATE KEY UPDATE
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字段。
UPDATE
modified_date
编辑:如~unutbu所建议,如果不想更改副本上的任何内容,可以使用INSERT IGNORE语法。其工作原理如下:
INSERT IGNORE
INSERT IGNORE INTO kompas_url (url, created_date, modified_date) VALUES ('http://example.com', NOW(), NOW())
这只会将某些类型的错误转换为最有用的警告,即声明存在重复唯一项的错误。如果将关键字IGNORE放入语句中,则不会出现错误,查询将被删除。在复杂的查询中,这也可能隐藏其他可能有用的错误,因此如果您想使用代码,最好确保代码是正确的。
IGNORE
您可以通过
url
来确定它是否首先在其中,也可以使url
字段唯一:这将阻止MySQL插入重复的行,但在尝试插入时也会报告错误。这是不好的,虽然我们可以处理错误,它可能掩盖其他人。为了解决这个问题,我们使用
ON DUPLICATE KEY UPDATE
语法:这允许我们在唯一字段中出现重复值时提供
UPDATE
语句(这可以包括主键)。在这种情况下,我们可能希望用当前日期更新modified_date
字段。编辑:如~unutbu所建议,如果不想更改副本上的任何内容,可以使用
INSERT IGNORE
语法。其工作原理如下:这只会将某些类型的错误转换为最有用的警告,即声明存在重复唯一项的错误。如果将关键字
IGNORE
放入语句中,则不会出现错误,查询将被删除。在复杂的查询中,这也可能隐藏其他可能有用的错误,因此如果您想使用代码,最好确保代码是正确的。相关问题 更多 >
编程相关推荐