账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    MySQL触发器,一直显示语法错误,说分号不对?
    29
    0
    create trigger trigger_course
    after insert on course_course for each row
    begin
        declare sid varchar(8);
        declare sname varchar(20);
        select logic_id into sid from course_selectcourse where id=new.course;
        select name into sname from course_selectcourse where id=new.course;
        update course_course
        set sub_logic_id=sid, sub_name=sname
        where id=new.id;
    end;

    22:28:06 create trigger trigger_course after insert on course_course for each row begin declare sid varchar(8) Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 4 0.000 sec


    一方面是已采纳的老哥说的那个问题,另一方面是update循环触发触发器也有问题。
    记录一下正确写法:

    drop trigger if exists trigger_course;
    delimiter $$
    create trigger trigger_course
    before insert on course_course for each row
    begin
        declare sid varchar(8);
        declare sname varchar(20);
        select logic_id into sid from subject_subject where id=new.subject_id;
        select name into sname from subject_subject where id=new.subject_id;
        set new.sub_logic_id=sid, new.sub_name=sname;
    end;
    $$
    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 11 元积分
        全部回答
    • 0
    • 达浪达浪达浪 普通会员 1楼
      在MySQL中,触发器的定义确实需要遵循特定的语法,并且通常涉及到多个语句,这些语句之间是不能直接使用分号(`;`)进行分割的。在创建触发器的整个SQL语句结尾才需要使用分号。 例如,一个基本的触发器定义结构如下: ```sql CREATE TRIGGER trigger_name AFTER INSERT ON table_name FOR EACH ROW BEGIN -- 触发器操作语句,如: UPDATE other_table SET column = NEW.column FROM inserted_table; END; ``` 注意这里的`BEGIN`和`END;`用于包裹触发器执行的一系列操作,而在这些操作内部并不需要单独的分号(除非你使用了多条语句,这种情况下每条语句末尾需要分号,但各语句间需用`;`隔开)。 如果你在创建触发器时收到“分号不对”的错误,可能的原因包括但不限于: 1. 在触发器主体内的SQL语句后面误加了分号。 2. 忘记在触发器定义的最后加上结束的分号(`;`)。 3. 如果你的SQL语句包含字符串,确保字符串中的分号没有被MySQL解析器误认为是SQL语句的结束符。在这种情况下,应使用转义字符来处理字符串内的分号。 请检查并修正这些问题,应该能解决“分号不对”的错误。
    更多回答
    扫一扫访问手机版