有没有办法将“on duplicaye key update”限制为只有当重复键是表的主键时才触发(如果冲突是由唯一键生成的,则不会)
下表举例:
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
值,它更新该用户而不是抛出错误。
我知道这是正确的行为,我只是想知道是否有一种方法可以只在主键上实现相同的结果。
1条答案
按热度按时间qnyhuwrf1#
on duplicate key
主键和唯一键的触发器。在您的例子中,主键是一个自动递增的列,因此不应该插入值。句号。
因此,只需不包含
on duplicate key
从句和省略id
从insert
.