如果用户名不存在,则插入sql

8qgya5xd  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(247)

此查询有什么问题:

INSERT INTO `customers`(`username`, `password`) 
            VALUES (:username, :password)
            WHERE NOT EXISTS (
                SELECT `username` FROM `customers` WHERE `username`=:username
            );
nimxete2

nimxete21#

查询有什么问题?它生成语法错误。
如果要防止重复,请对表使用唯一约束:

ALTER TABLE customers ADD CONSTRAINT unq_customers_username UNIQUE (username);

如果尝试使用

INSERT INTO `customers`(`username`, `password`) 
     VALUES (:username, :password);

您将得到一个违反约束的错误。
在这种情况下,通常需要实际更新现有行中的密码。您可以使用mysql扩展来实现这一点 ON DUPLICATE KEY UPDATE :

INSERT INTO `customers`(`username`, `password`) 
     VALUES (:username, :password)
     ON DUPLICATE KEY UPDATE password = :password;

相关问题