【问题标题】:Insert into trigger插入触发器
【发布时间】:2013-10-24 18:03:04
【问题描述】:

我在 MYSQL 中遇到了问题:

1-表名为“norte”,它有一个名为“nortel”的列 2-表名为“bitacora”,它有一个名为“telefono”的列

我制作了一个触发器来复制此信息,例如每当我向“norte”表添加某些内容时,我希望它自动复制到 bitacora 表中,我不知道我做错了什么,这是我的触发器

CREATE TRIGGER insertar AFTER INSERT ON norte
FOR EACH ROW 
BEGIN
INSERT INTO bitacora SET telefono = NEW.nortel 
END; 

这里的问题是它说意外的END期待';'

但如果我删除“END”它会说

CREATE TRIGGER insertar AFTER INSERT ON norte
FOR EACH ROW 
BEGIN
INSERT INTO bitacora SET telefono = NEW.nortel;

意外的 END_OF_INPUT 需要 ';'

【问题讨论】:

    标签: mysql triggers insert


    【解决方案1】:

    您需要更改分隔符。

    delimiter |
    CREATE TRIGGER insertar AFTER INSERT ON norte
    FOR EACH ROW 
    BEGIN
        INSERT INTO bitacora (telefono) values (NEW.nortel);
    END
    |
    delimiter ;
    

    否则数据库会认为您的触发器语句在第一个 ; 处结束,那么它将是不完整的。

    【讨论】:

      【解决方案2】:

      您在 NEW.nortel 之后缺少一个“;”:

      应该是:

      CREATE TRIGGER insertar AFTER INSERT ON norte 
      FOR EACH ROW 
      BEGIN 
        INSERT INTO bitacora SET telefono = NEW.nortel; 
      END;
      

      sqlfiddle demo

      【讨论】:

      • 谢谢你;帮助我使用了第一个答案,看来无论如何都可以回复我:)祝你有美好的一天
      【解决方案3】:
      DELIMITER $$
      
      
      CREATE TRIGGER row_update_trigger  AFTER INSERT ON returns_loading_dc 
        FOR EACH ROW BEGIN
          INSERT INTO   Returns_receiving_Fc 
          set 
            Var_key=NEW.Var_key,
            Product_Title=NEW.Product_Title,
            Building=NEW.Building,
            Hub_ID=NEW.hub_id,
            JPIN=NEW.JPIN,
            Tagging_Required=NEW.Tagging_Required,
            Food_Non_Food=NEW.Food_Non_Food,
            Qty_loaded_from_hub=NEW.Total_Quantity_Loaded;
      
      
      END $$ need help
      

      【讨论】:

        猜你喜欢
        • 2016-10-13
        • 2016-01-27
        • 2011-03-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-08
        相关资源
        最近更新 更多