doujingjiao0015 2014-10-16 15:54 采纳率: 0%
浏览 10
已采纳

在第二种情况下使用mysql触发错误

Hey guys i am new to mysql.I have did some code with mysql trigger but it throws me error on the second condition. The code

This one works fine

create table foo (a INT, b INT, ts TIMESTAMP);
create table bar (a INT, b INT);

INSERT INTO foo (a,b) VALUES(5,1);
INSERT INTO foo (a,b) VALUES(4,2);


INSERT INTO foo (a,b) VALUES(3,3);


CREATE TRIGGER ins_sum AFTER UPDATE ON foo

FOR EACH ROW
insert into bar values(OLD.a,NEW.b);



UPDATE foo SET a = 3 WHERE b = 1;

It succesfully outputs 5.

The error code

create table foo (a INT, b INT, ts TIMESTAMP);
create table bar (a INT, b INT);

INSERT INTO foo (a,b) VALUES(5,1);
INSERT INTO foo (a,b) VALUES(4,2);
INSERT INTO foo (a,b) VALUES(3,3);



CREATE TRIGGER ins_sum AFTER UPDATE ON foo
FOR EACH ROW
insert into bar values(OLD.a,NEW.b);
insert into bar values(OLD.a,NEW.b);

UPDATE foo SET a = 3 WHERE b = 1;

When i called like select a from bar where b = 1.The expected result is 5 and 4.

But instead of it .it outputs like Schema Creation Failed: Unknown column 'OLD.a' in 'field list':

So my question is why doesnt the second option work here ..Whay cant i add NEW.a and NEW.b in the insert statement second time.

Thanx for the help..

  • 写回答

2条回答 默认 最新

  • dongzan1970 2014-10-16 15:59
    关注

    You need the DELIMITER command so that the semicolon doesn't end the trigger definition. You also need a BEGIN ... END block to put multiple commands into the FOR EACH ROW loop

    DELIMITER //
    CREATE TRIGGER ins_sum AFTER UPDATE ON foo
        FOR EACH ROW
        BEGIN
            insert into bar values(OLD.a,NEW.b);
            insert into bar values(OLD.a,NEW.b);
        END
    //
    DELIMITER ;
    

    DEMO

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料