首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL触发器:根据枚举类型的NEW.column插入

MySQL触发器:根据枚举类型的NEW.column插入
EN

Database Administration用户
提问于 2019-11-28 12:57:50
回答 1查看 403关注 0票数 0

我正试图在我的一张桌子上加一个触发器。根据新插入的行的枚举值,它应该执行不同的insert-query。我正在使用phpMyAdmin,并且试图在SQL中执行我的脚本,但是它总是会出现一个错误,它告诉我绝对没有什么.

下面是我试图在phpMyAdmin的SQL中执行的SQL脚本:

代码语言:javascript
复制
CREATE TRIGGER insert_after_new_kpi_trig
    AFTER INSERT ON KPI
    FOR EACH ROW

    IF NEW.kpi_type = 3 THEN
        INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projects;
        INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams;
    ELSE IF NEW.kpi_type = 1 THEN
        INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams;
    ELSE IF NEW.kpi_type = 2 THEN
        INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projects;
    END IF;

这就是我所犯的错误:

代码语言:javascript
复制
#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 6

那么,是否有人能告诉我,我的脚本是否有问题,或者我是否必须使用枚举的string-value来进行比较,而不是使用我目前正在使用的index?谢谢你的帮助。

编辑:也许我也应该提一下枚举是什么,它是什么

代码语言:javascript
复制
enum('TEAM', 'PROJECT', 'BOTH')

因此,如果我在if条件下使用3,它应该等于BOTH

EN

回答 1

Database Administration用户

回答已采纳

发布于 2019-11-29 12:55:09

我不得不使用分隔符来使它工作,但是由于delimiter是mysql-控制台命令,所以它在我的脚本中不起作用。

phpMyAdmin有一种不同的方式来设置分隔符。在脚本输入的下面还有另一个设置分隔符的输入,所以我的脚本看起来如下所示:

代码语言:javascript
复制
CREATE TRIGGER insert_after_new_kpi_trig
    AFTER INSERT ON KPI
    FOR EACH ROW
    BEGIN
    IF NEW.kpi_type = 3 THEN BEGIN
        INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projects p;
        INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams t;
        END;
    ELSEIF NEW.kpi_type = 1 THEN
        INSERT INTO TeamKPIData (team_id, kpi_id, value) SELECT t.id, NEW.id, 0 FROM Teams t;
    ELSEIF NEW.kpi_type = 2 THEN
        INSERT INTO ProjectKPIData (project_id, kpi_id, value) SELECT p.id, NEW.id, 0 FROM Projectsp;
    END IF;
    END $ --Thats the delimiter I set.
票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/254358

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档