mysql - 如何从不同的表中获取值并将其传递给触发器?

标签 mysql sql database stored-procedures triggers

我有 3 个表:

event:
---------------------
event_id | uid | date
---------------------

event_invitees
----------------------
invitees_id | event_id
---------------------- 

notification
-----------------
uid | invitees_id
-----------------

我已经创建了一个触发器,它将在插入“event_invitees”后插入到“通知”表中

delimiter |
create trigger eventNotificationTrigger after insert on event_invitees
for each row 
begin
declare id int(12);
set id = (select uid from event where event_id=new.event_id);
insert into notification (invitees_id,uid) select invitees_id,@id from event_invitees where event_id=new.event_id;
end;
|

但它无法从事件表中获取 uid。那么如何从不同的表中获取不同的值并在触发器中将它们插入到一个表中呢?

最佳答案

删除@

insert into notification (invitees_id,uid) 
select invitees_id, @id from event_invitees where ...
                    ^-------------------------------------here

您使用 declare 创建的变量不会被 @ 引用。只有您使用 set 创建的。示例:

declare id int(12);
select 1 into id;
select id;

set @id = (select 1);
select @id;

关于mysql - 如何从不同的表中获取值并将其传递给触发器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15728480/

相关文章:

mysql - Artifactory 无法启动 - [错误] 无法执行查询 : Table 'unique_ids' already exists

PHP Mysqli 从 JOIN 返回数组(别名为数组键)

mysql - 删除 MySQL 中除重复行之外的所有重复行?

php - 将列链接到 MySQL 数据库中的行

java - 根据列中的重复项从数据中删除整行

python - 我可以将 ssh/scp 与存储在数据库中的私钥一起使用吗?

MySQL对某些特定值的慢查询(股票数据)

MySQL 版本 7.0.6-IR3 尝试连接数据库时出现问题

SQL 从零到一,或 bool 值

sql - 使用局部变量设置 NOCOUNT 状态