【问题标题】:MySQL Trigger Insert BeforeMySQL触发器插入之前
【发布时间】:2017-08-15 10:25:21
【问题描述】:

我正在尝试编写一个将在另一个表中插入默认值的触发器

在我的学生表中插入一条记录后,我想在我的 Student_Chapter 表中插入一条新记录。

学生表有一个名为 S_ID 的字段,该字段是自动递增的,并且是该表的主键。

Student_Chapter 表有两个字段 Student_ID 整数 Chapter_ID 整数

我尝试创建此触发器以在您输入新学生记录时触发。 但是,我在尝试创建它时遇到错误……我已经尝试了几件事……并查看了此站点上的各种示例。

Create Trigger AssignDefaultChapter_trigger 
Before INSERT On Students
FOR EACH ROW
BEGIN
    DECLARE Default_ID INT;
        SET Default_ID =(SELECT C_ID FROM Chapter WHERE ChName = "UNASSIGNED";
    Insert into Student_Chapter(Chapter_ID,Student_ID) values (Default_ID,New.S_ID);
END;

据我所知,该插入没有任何问题。

我得到的错误是 #1064 - 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以了解在 '; 附近使用的正确语法。在第 6 行插入 Student_Chapter (Chapter_ID, Student_ID) 值(Default_ID,NEW.')

【问题讨论】:

    标签: mysql triggers sql-insert


    【解决方案1】:

    缺少) ?在“未分配”之后 另外,您不应该在参数前加上@

    Create Trigger AssignDefaultChapter_trigger 
    Before INSERT On Students
    FOR EACH ROW
    BEGIN
        DECLARE @Default_ID INT;
            SELECT @Default_ID = C_ID FROM Chapter WHERE ChName = "UNASSIGNED";
        Insert into Student_Chapter(Chapter_ID,Student_ID) values (@Default_ID,New.S_ID);
    END;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-30
      • 2012-12-11
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多