我正在使用从tableA的触发器调用的过程(例如)。在该过程中,我正在更新另一个表,即tableB。但这不起作用,我没有收到任何错误,但tableB没有更新。请帮助我解决此问题。

触发器:用于表A插入前

BEGIN
   CALL his_arrear(new.Reg_No,new.Sub_Code);
END


程序:

BEGIN
   DECLARE toup integer;
    select count(*) into toup from tableA where Reg_No=reg and Sub_Code=scode;
    update tableB set his_arrear=toup where regno=reg;
END


实际上,此过程正在执行,但未更新tableB。

最佳答案

既然您标记了SQL,以下是我在SQL中的操作方法:

ALTER PROCEDURE his_arrear
    @reg VARCHAR(10),
    @scode VARCHAR(10)
AS
BEGIN
    DECLARE @toup INTEGER;

    SELECT COUNT(*) AS @toup
    FROM tableA
    WHERE Reg_No=@reg AND Sub_Code=@scode;

    UPDATE tableB
    SET his_arrear=ISNULL(@toup,0)
    WHERE regno=@reg;
END


笔记:
 -我使用VARCHAR(10),因为您没有说明数据类型。根据需要进行更改。
 -您在命令中使用了Reg_noregno。这些列名正确吗?

关于mysql - 无法使用Mysql -phpMyAdmin中的存储过程更新表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26561706/

10-09 17:30