Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在mysql5中,如何从触发器中的select查询中获取值?_Mysql_Sql_Triggers - Fatal编程技术网

在mysql5中,如何从触发器中的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

如何从触发器中的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 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我刚刚在答案中添加了一个存储过程的样本。