在mysql5中,如何从触发器中的select查询中获取值?
如何从触发器中的select查询中获取值并在表中插入该值?对于插入触发器查询,您将使用新对象在mysql5中,如何从触发器中的select查询中获取值?,mysql,sql,triggers,Mysql,Sql,Triggers,如何从触发器中的select查询中获取值并在表中插入该值?对于插入触发器查询,您将使用新对象 对于更新触发器查询,您将使用新旧对象 对于删除触发器查询,您将使用对象OLD 示例1:如果运行INSERT INTO mytable(num)值(10) 在插入触发器中,将列引用为NEW.num(10) 示例2:如果运行updatemytable SET num=41,其中num=10 在更新触发器中,引用OLD.num(10)和NEW.num(41) 示例3:如果运行DELETE mytable nu
对于更新触发器查询,您将使用新旧对象
对于删除触发器查询,您将使用对象OLD
示例1:如果运行INSERT INTO mytable(num)值(10)
在插入触发器中,将列引用为NEW.num(10) 示例2:如果运行updatemytable SET num=41,其中num=10
在更新触发器中,引用OLD.num(10)和NEW.num(41) 示例3:如果运行DELETE mytable num=104
在删除触发器中,引用OLD.num(104) 使用类似以下内容:
DELIMITER $$
create trigger my_trigger
AFTER UPDATE on my_update_table
for each row
begin
DECLARE P1,P2 VARCHAR(50);
SELECT PRICENAME INTO P1 FROM PRICEIES WHERE PRICEID=OLD.PRICEID;
SELECT PRICENAME INTO P2 FROM PRICEIES WHERE PRICEID=NEW.PRICEID;
INSERT INTO AUDITLOG(OLDVALUE, NEWVALUE) VALUES (P1,P2);
end $$
DELIMITER ;
但对于请求表中的更新触发器,我有一个PRICEID,不必在请求表中使用PRICENAME,我必须从PRICES表中获取PRICENAME并将PRICENAME插入AUDITLOG表。怎么可能呢?记住,触发器可以作为存储过程写入。在每行设置之后,开始…结束构造并写入存储过程代码。如果我必须写入“从PRICEID=OLD.PRICEID的pricees中选择PRICENAME作为P1”,“从PRICEID=NEW.PRICEID的pricees中选择PRICENAME作为P2”,并插入AUDITLOG(OLDVALUE,NEWVALUE)值(P1,P2)怎么可能呢?@Shooter我刚刚在答案中添加了一个存储过程的样本。