В настоящее время я работаю с sequelize на RDS Aurora DB, и мне нужно отследить, какие записи, из каких таблиц были удалены - для этого я создал новую таблицу dbLog. Теперь мне нужно добавить триггер в базу данных, который сохраняет идентификатор записи в таблице dbLog всякий раз, когда эта запись в таблице t1 удаляется. По сути, мне нужно охватить два сценария ios для уже развернутых баз данных и тех, которые еще не существуют.
- База данных уже существует. Это легко, так как я могу создать триггер по необработанному запросу, как этот
CREATE TRIGGER trigger AFTER DELETE ON t1 FOR EACH ROW
INSERT INTO dbLog ( id, tableName, status, updatedAt )
VALUES (OLD.id, 't1', 'D', NOW())`
База данных не существует. Это проблематично c, так как он создается созданием модели и затем sequelize.syn c (). Поэтому я не могу просто вызвать необработанный запрос, вместо этого мне нужно определить этот триггер в модели для таблицы t1. Так я запускаю таблицу (упрощенно)
t1.init(
{
id: {
type: new DataTypes.BIGINT,
autoIncrement: true,
primaryKey: true
},
name: {
type: new DataTypes.STRING,
allowNull: false
}
},
{
sequelize,
tableName: 't1',
}
);
Проблема в том, что я не знаю, как создать этот триггер. Я попытался поместить что-то подобное в раздел атрибутов t1.Init. Но есть некоторая проблема, когда я проверяю базу данных на наличие триггеров, ни один не был создан. Как я могу это исправить? И даже триггеры, созданные этим способом, эквивалентны 1: 1 триггерам, созданным необработанным запросом? Большое спасибо.
hooks: {
afterDestroy: function(t1) {
DbLog.create({
id: t1.id,
tableName: 't1',
status: 'D',
updatedAt: '2015-10-02'
})
}
}