【发布时间】:2018-07-02 23:05:45
【问题描述】:
有没有办法限制“ON DUPLICAYE KEY UPDATE”仅在重复键是表的 PRIMARY KEY 时触发? (如果冲突是由 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(),它根据调用它的对象上是否存在id 属性来区分INSERT 和UPDATE。
现在我使用 INSERT INTO ... ON DUPLICATE KEY UPDATE 查询重写了这个方法,但是当我尝试插入(例如)具有已经存在的 username 值的用户时,它会更新该用户而不是引发错误。
我知道这是正确的行为,我只是想知道是否有办法仅在 PRIMARY KEY 上实现相同的结果。
【问题讨论】:
-
我假设应该读过
UNIQUE(username)? -
@Uueerdo 是的,抱歉,我更新了问题
标签: mysql sql sql-update primary-key unique-key