gpt4 book ai didi

MySQL 在没有其他类似的情况下插入新值

转载 作者:行者123 更新时间:2023-11-29 02:39:40 25 4
gpt4 key购买 nike

我正在尝试通过向表中插入新值来解决问题。主键是 ID 而不是电子邮件......在插入之前我需要检查其他记录的电子邮件值。如果没有匹配插入的电子邮件,则插入数据。但是我无法为此编写正确的代码...

IF EXIST (SELECT email FROM users WHERE email = "email")  
THEN
BEGIN
'We Have Records of this Customer'
END
ELSE
BEGIN
INSERT INTO users
VALUES (null,'email9','password9','forename9','lastname9')
END
END IF

或者:

IF SELECT COUNT(*) FROM users WHERE email = 'email' > 0
THEN
BEGIN
//email exist
END
ELSE
BEGIN
//inserting
END
END IF

最佳答案

这看起来像是 MySQL INSERT ... ON DUPLICATE KEY UPDATE 语法的一个很好的用例。

首先,您要在 email 列上创建一个 UNIQUE 约束。这是表示您的业务规则的正确方法:

ALTER TABLE users ADD CONSTRAINT users_unique_email UNIQUE (email);

现在,如果要插入的记录会在主键或 UNIQUE 约束上生成重复项,则 MySQL 允许您将操作转换为 UPDATE 代替。

在您的情况下,由于您不想在这种情况下更新任何内容,您可以简单地重新分配 email 列(我们知道这里是相同的)。

考虑:

INSERT INTO users 
VALUES (null,'email9','password9','forename9','lastname9')
ON DUPLICATE KEY UPDATE SET email = 'mail9';

关于MySQL 在没有其他类似的情况下插入新值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55426839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com