drop table if exists tab1;
create table tab1(
tab1_id varchar(11)
);
drop table if exists tab2;
create table tab2(
tab2_id varchar(11)
);
drop trigger if exists t_afterinsert_on_tab1;
create trigger t_afterinsert_on_tab1 after insert on tab1 for each row
begin
insert into tab2(tab2_id) values(new.tab1_id);
end;
各位大神,我在网上找了一个很简单的trigger样例,但是还是出错了,我下载的是mysql官网上最新的,用的是mysql workbench,
insert into tab2(tab2_id) values(new.tab1_id);
end;
这两句话有语法错误,end说是语义错误,unexpected END,然后 values(new.tab1_id);的")"也显示有语义错误,unexpected end_of_input,expecting ";"
是oracle公司的mysql,被trigger搞了一个晚上了!真正的语法应该什么样的,非常困惑啊!MySQL

解决方案 »

  1.   

    是分隔符的问题么,我的Mysql 5.5正常的。
    你试试
    delimiter //create trigger t_afterinsert_on_tab1 
    after insert on tab1 for each row 
    begin
    insert into tab2(tab2_id) values(new.tab1_id); 
    end//delimiter ;
      

  2.   

    mysql> drop table if exists tab1;
    create table tab1(
        tab1_id varchar(11)
    );
    Query OK, 0 rows affectedQuery OK, 0 rows affectedmysql> drop table if exists tab2;
    create table tab2(
        tab2_id varchar(11)
    );
    Query OK, 0 rows affectedQuery OK, 0 rows affectedmysql> drop trigger if exists t_afterinsert_on_tab1;
    create trigger t_afterinsert_on_tab1 after insert on tab1 for each row
    begin
    insert into tab2(tab2_id) values(new.tab1_id);
    end;
    Query OK, 0 rows affectedQuery OK, 0 rows affected
    我表示我的没问题啊。。也是5.6版本的
      

  3.   

    drop table if exists tab1;
    create table tab1(
        tab1_id varchar(11)
    );
    drop table if exists tab2;
    create table tab2(
        tab2_id varchar(11)
    );
    drop trigger if exists t_afterinsert_on_tab1;
    create trigger t_afterinsert_on_tab1 after insert on tab1 
    for each row
    insert into tab2(tab2_id) values(new.tab1_id);
      

  4.   

    drop table if exists tab1;
    create table tab1(
        tab1_id varchar(11)
    );
    drop table if exists tab2;
    create table tab2(
        tab2_id varchar(11)
    );
    drop trigger if exists t_afterinsert_on_tab1;
    DELIMITER $$
    create trigger t_afterinsert_on_tab1 after insert on tab1 for each row
    begin
    insert into tab2(tab2_id) values(new.tab1_id);
    end$$
    DELIMITER ;