gpt4 book ai didi

MySQL 触发器 - 比较两个不同表的值

转载 作者:行者123 更新时间:2023-11-29 09:58:41 24 4
gpt4 key购买 nike

我目前正在努力解决 MySQL 中触发器的实现问题。我的场景如下:

有两个数据库(电子邮件注册和答案)以不同的 ID 集作为主键。因此,我想使用电子邮件地址作为标识符来识别需要更新的正确行。(这在两个表中都是相同的)我想在数据库“注册”更新时启动触发器。然后该触发器更新“users”中的值。 (表示为已确认/已取消订阅)

根据我的理解,问题是没有检查正确的行。我下面的代码直接采用 phpmyadmin。在当前的形式中,该语句用空行填充答案数据库,并根据需要更改确认/取消订阅的列,但它没有标识正确的行。

    AFTER
UPDATE
------
INSERT INTO answers (confirmed, unsubscribed)
SELECT emailregistration.confirmed, emailregistration.unsubscribed
FROM emailregistration
WHERE emailregistration.email = email
-----
root@localhost

*This should translate into the following trigger code:*

CREATE TRIGGER DOI
AFTER UPDATE
ON emailregistration
FOR EACH ROW
BEGIN
INSERT INTO answers (confirmed, unsubscribed)
SELECT emailregistration.confirmed, emailregistration.unsubscribed
FROM emailregistration
WHERE emailregistration.email = email
END;

我希望我准确地描述了我的问题。如果我没有,请随时提问。感谢您的帮助,非常感谢。

最佳答案

也许是这样的

drop table if exists r,u;
create table r(email varchar(3), subscribed varchar(1), confirmed varchar(1));
create table u(email varchar(3), subscribed varchar(1), confirmed varchar(1));

insert into r (email) values('aaa'),('bbb');
insert into u (email,subscribed,confirmed) values('aaa','x','x'),('bbb','y','y');
drop trigger if exists t;
delimiter $$
CREATE TRIGGER t
AFTER UPDATE
ON r
FOR EACH ROW
BEGIN
update u
set subscribed = new.subscribed,
confirmed = new.confirmed
where email = new.email;

END $$
delimiter ;

update r set subscribed = 'n' where email = 'aaa';

select * from r;

+-------+------------+-----------+
| email | subscribed | confirmed |
+-------+------------+-----------+
| aaa | n | NULL |
| bbb | NULL | NULL |
+-------+------------+-----------+
2 rows in set (0.00 sec)

select * from u;

+-------+------------+-----------+
| email | subscribed | confirmed |
+-------+------------+-----------+
| aaa | n | NULL |
| bbb | y | y |
+-------+------------+-----------+
2 rows in set (0.00 sec)

如果这不是您拥有的模型,则将其与预期结果一起添加到问题中。

关于MySQL 触发器 - 比较两个不同表的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53413489/

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