仅对主键进行重复密钥更新?

taor4pac  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(453)

有没有办法将“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 值,它更新该用户而不是抛出错误。
我知道这是正确的行为,我只是想知道是否有一种方法可以只在主键上实现相同的结果。

qnyhuwrf

qnyhuwrf1#

on duplicate key 主键和唯一键的触发器。
在您的例子中,主键是一个自动递增的列,因此不应该插入值。句号。
因此,只需不包含 on duplicate key 从句和省略 idinsert .

相关问题