اذهب إلى المحتوى
  • 0

كيفية إنشاء triggers في sequelize

Ahmed Yehia2

السؤال

Recommended Posts

  • 0

بالنسبة لل triggers يمكنك إنشاؤها من خلال طريقتين

  1. عبر كتابتها ك raw query كالتالي 
    import { Sequelize } from "sequelize";
    
    const sequelize = new Sequelize({  host: "localhost",
                                       port: 3306,
                                       dialect: "MySQL",
                                       username: "username",
                                       password: "password",
                                       database: "dbname",
                                       logging: false,});
    
    sequelize.query('CREATE TRIGGER test AFTER INSERT ON users' +
      ' FOR EACH ROW' +
      ' BEGIN' +
      ' insert into logs (UserId) values(new.id);' +
      'END;')

     

  2. ومن الممكن أيضًا إنشاؤها من خلال الhooks كما يظهر في المثال التالي حيث نقوم بإنشاء trigger عند إنشاء مُستخدم جديد(insert query)  

    module.exports = function(sequelize, DataTypes) {    
      var User = sequelize.define('User', {
        name        : DataTypes.STRING(255),
        email       : DataTypes.STRING(255),
        username    : DataTypes.STRING(45),
        password    : DataTypes.STRING(100),
      }, {
        classMethods : {
          associate : function(models) {
            User.hasOne(models.Config)
          }
        },
        hooks: {
          afterCreate: function(user, options) {
            models.Config.create({
              UserId: user.id
            })
          }
        }
      });
      return User;
    };

     ويمكن إستبدال afterCreate بأي hook أخر حيث يتوفر العديد من الhooks مثل afterUpdate, afterDestroy , beforeUpdate, beforeCreate, beforeDestroy فيمكنك إذًا وضع hook حسب الحدث الذي تريد تنفيذ الشفرة البرمجية بعده

بالنسبة إلى الشق الثاني من السؤال غير واضح هل يمكنك رجاءًا توضيحه بشكلٍ أكبر؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...