有没有办法限制“ON DUPLICAYE KEY UPDATE”仅在重复键是表的主键时触发? (如果冲突是由 UNIQUE KEY 产生的则不会)
例如下表:
CREATE TABLE users (
id INT(16) UNSIGNED AUTO_INCREMENT,
username VARCHAR(255) NOT NULL UNIQUE,
PRIMARY KEY (id),
UNIQUE (username)
);
我只想在 id
时触发更新列生成冲突,并像往常一样抛出错误,以防因唯一键 username
而发生冲突。 .
编辑:
我正在开发一个非常简单的 PHP 框架。以前我只有一个方法 save()
区分 INSERT
和 UPDATE
基于 id
的存在调用它的对象的属性。
现在我使用 INSERT INTO ... ON DUPLICATE KEY UPDATE
重写了这个方法查询,但是当我尝试插入(例如)一个已经存在 username
的用户时值,它会更新该用户而不是抛出错误。
我知道这是正确的行为,我只是想知道是否有一种方法可以仅在 PRIMARY KEY 上实现相同的结果。
最佳答案
on duplicate key
主键和唯一键的触发器。
在你的例子中,主键是一个自动递增的列,所以你不应该插入一个值。期间。
因此,您只需不包括 on duplicate key
子句并从 insert
中省略 id
即可获得所需的行为.
关于mysql - ON DUPLICATE KEY UPDATE 仅针对主键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51144683/