首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用mysqljs包为nodejs创建触发器?

如何使用mysqljs包为nodejs创建触发器?
EN

Stack Overflow用户
提问于 2019-06-12 06:54:17
回答 1查看 1.4K关注 0票数 0

我正在尝试为数据库创建一个触发器,使用nodejs的mysql包。但我说错了

您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行的“Leave\”插入后使用接近\‘分隔符$$创建触发器'NotificationTrigger’的正确语法。

代码语言:javascript
复制
var createNotificationTrigger = {
  query:

    'DELIMITER $$\
    CREATE TRIGGER `NotificationTrigger` \
    After INSERT  ON `Leave` \
    FOR EACH ROW \
    BEGIN \
    Declare fullname  varchar(255); \
    Declare lastname  varchar(255); \
    Declare requestedbyid  int; \
    Declare insertstring varchar(255); \
    Set fullname = ( select Employee.FirstName from Employee where Employee.ID = NEW.RequestedByID); \
    Set lastname =    ( select Employee.LastName from Employee where Employee.ID = NEW.RequestedByID); \
    set fullname = (select  Concat(fullname," ",lastname)); \
    set requestedbyid= (select  New.RequestedByID); \
    set  insertstring = (select Concat("New Leave request from ",fullname , " employee id : ",requestedbyid)); \
    INSERT INTO `Notification` \
    (`Title`,`SeenBy`,`SentByID`,`NotificationTypeID`) \
    VALUES(insertstring, requestedbyid, requestedbyid,2) ; \
    END$$ \
    DELIMITER ;'

};

这就是我的触发器查询的样子。我正在使用以下方法执行此操作:

代码语言:javascript
复制
connection.query(createNotificationTrigger.query,[],(err)=>{//something here});

这应该会在我的数据库中创建一个触发器,但是会抛出上面提到的错误。该查询在mysql工作台中运行良好。

EN

回答 1

Stack Overflow用户

发布于 2020-04-02 01:11:53

根据this answer,您应该能够通过删除DELIMITER语句来创建触发器,而不会出现错误。我用自己的触发器使用自己的模式进行了测试,这是可行的。

因此,您的代码应该修改为以下内容以使其工作:

代码语言:javascript
复制
var createNotificationTrigger = {
  query:
    'CREATE TRIGGER `NotificationTrigger` \
    After INSERT  ON `Leave` \
    FOR EACH ROW \
    BEGIN \
    Declare fullname  varchar(255); \
    Declare lastname  varchar(255); \
    Declare requestedbyid  int; \
    Declare insertstring varchar(255); \
    Set fullname = ( select Employee.FirstName from Employee where Employee.ID = NEW.RequestedByID); \
    Set lastname =    ( select Employee.LastName from Employee where Employee.ID = NEW.RequestedByID); \
    set fullname = (select  Concat(fullname," ",lastname)); \
    set requestedbyid= (select  New.RequestedByID); \
    set  insertstring = (select Concat("New Leave request from ",fullname , " employee id : ",requestedbyid)); \
    INSERT INTO `Notification` \
    (`Title`,`SeenBy`,`SentByID`,`NotificationTypeID`) \
    VALUES(insertstring, requestedbyid, requestedbyid,2) ; \
    END'
};
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56556245

复制
相关文章

相似问题

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