在 MySQL 触发器中将值设置为变量
Set Value to Variable in MySQL Trigger
我创建一个 MySql 触发器并声明一个变量。然后我有一些条件。 if 内部不能为 if 外部声明的变量设置值。这是可能的?因为我需要那个可变数据到另一个函数。我总是得到 null。
这是我的示例代码
设置查询在执行时获取值
delimiter $$
CREATE TRIGGER Table1INSERTCustomer
AFTER INSERT ON Table1
FOR EACH ROW
BEGIN
DECLARE CustomerId integer;
IF (SELECT CustomerID FROM Seller WHERE Id = NEW.ResellerID AND CustomerID IS NOT NULL)
THEN
BEGIN
SET @CustomerId := (SELECT CustomerID FROM Seller WHERE Id = NEW.ResellerID LIMIT 1); <-- This is Problem
END;
END IF;
END;
$$
非常感谢
建模示例。
create table test1 (id int, val int);
insert into test1 values (1,11), (2,22);
select * from test1;
id | val
-: | --:
1 | 11
2 | 22
create table test2 (id int, val int);
create trigger tr
after insert on test2
for each row
select test1.val into @var
from test1
where test1.id = NEW.id;
insert into test2 values (1,111);
select * from test1;
id | val
-: | --:
1 | 11
2 | 22
select * from test2;
id | val
-: | --:
1 | 111
select @var;
| @var |
| ---: |
| 11 |
db<>fiddle here
学习。申请。
我创建一个 MySql 触发器并声明一个变量。然后我有一些条件。 if 内部不能为 if 外部声明的变量设置值。这是可能的?因为我需要那个可变数据到另一个函数。我总是得到 null。
这是我的示例代码 设置查询在执行时获取值
delimiter $$
CREATE TRIGGER Table1INSERTCustomer
AFTER INSERT ON Table1
FOR EACH ROW
BEGIN
DECLARE CustomerId integer;
IF (SELECT CustomerID FROM Seller WHERE Id = NEW.ResellerID AND CustomerID IS NOT NULL)
THEN
BEGIN
SET @CustomerId := (SELECT CustomerID FROM Seller WHERE Id = NEW.ResellerID LIMIT 1); <-- This is Problem
END;
END IF;
END;
$$
非常感谢
建模示例。
create table test1 (id int, val int);
insert into test1 values (1,11), (2,22);
select * from test1;
id | val -: | --: 1 | 11 2 | 22
create table test2 (id int, val int);
create trigger tr after insert on test2 for each row select test1.val into @var from test1 where test1.id = NEW.id;
insert into test2 values (1,111);
select * from test1;
id | val -: | --: 1 | 11 2 | 22
select * from test2;
id | val -: | --: 1 | 111
select @var;
| @var | | ---: | | 11 |
db<>fiddle here
学习。申请。