Search code examples
node.jsdatabaseexpresstriggersmysql2

create trigger in nodejs mysql2 without using sequalize


i am trying to create trigger with mysql2,express and nodejs in my database and is there a way to create trigger in database table without sequalize ,delimiter is not working

        var sqlBeforeUpdateTrigger=`CREATE TRIGGER  beforeSupplierUpdate
        BEFORE UPDATE ON Supplier
        FOR EACH ROW
        BEGIN
        INSERT INTO SupplierUpdate
        SET action = 'update',
        supplierId=old.supplierId,
        name=old.name,
        email=old.email,
        country=old.country,
        state=old.state,
        city=old.city,
        street=old.street,
        pinCode=old.pinCode,
        poBox=old.poBox,
        supplierDetails=old.supplierDetails,
        updatedOn= NOW();
        END;`;

    
        return new Promise(async (resolve, reject) => {
       
            db.query(sqlBeforeUpdateTrigger, function (err, result, fields) {
               if (err) {
                  reject(err);
               }
              resolve(result);
             });
             
           });

Solution

  • The problem is delimiter is only supported by mysql client provided by workbench or some other softwares inorder to run procedures where we have to seperate instruction instead of delimiter we can join different instruction using javascript + operator to get sql query string i.e

    var sqlQueryTrigger='CREATE TRIGGER beforeSupplierUpdate'+
      ' BEFORE UPDATE ON Supplier' +
      ' FOR EACH ROW' +
         ' BEGIN' +
      ' INSERT INTO SupplierUpdate'+
      'SETaction="update",supplierId=old.supplierId,name=old.name,
      email=old.email,country=old.country,state=old.state,
      city=old.city,street=old.street,
      pinCode=old.pinCode,poBox=old.poBox,
      supplierDetails=old.supplierDetails,
      updatedOn= NOW();' +
     'END;';
    
        return new Promise(async (resolve, reject) => {
       
            db.query(sqlBeforeUpdateTrigger, function (err, result, fields) {
               if (err) {
                  reject(err);
               }
              resolve(result);
             });
             
           });