У меня есть таблица Products, которая содержит атрибут, который будет обновляться через ERP-обновление конечным пользователем. Когда это произойдет, мне нужно, чтобы обновление было реплицировано в другую таблицу. У меня совсем нет опыта создания триггеров T-SQL, но я считаю, что это выполнит мою задачу.Использование триггера tsql для синхронизации данных в двух таблицах
Пример: В IC_Products
таблице:
Productkey = 456
StockLocation = ‘GA-07-A250’
В IC_ProductCustomFields
таблице (будет начать тот же потому, что будет запускать сценарий, чтобы сделать это так):
Productkey = 456
CustomFieldKey = 13
Value = ‘GA-07-A250’
Когда IC_Products.StockLocation
колонка обновляется, после чего я хочу, чтобы значение в новом IC_ProductCustomFields.Value
также автоматически обновлялось и сразу.
Если новая запись создана в IC_Products
, тогда я хочу, чтобы новая запись также была создана в IC_ProductCustomFields
.
Я хотел бы знать, как написать сценарий триггера, а также как его реализовать. Я использую SQL Server 2005.
Спасибо Доминик. Хорошо, что это будет работать. Я попробую попробовать в тестовом экземпляре. Итак, когда я это исполню, он будет реализован в то время? Если да, то как бы удалить его, если потребуется? В прошлом я заметил, что иногда триггеры отключены; Я не был вовлечен в исправление, поэтому я не знал, что вызвало это, или что это было за решение; повторить выполнение кода? – user2984486
Триггер вступает в силу сразу же после его создания. Я не знаю, как создать триггер в отключенном состоянии, но вы можете сделать это из T-SQL с помощью «ENABLE TRIGGER» и «DISABLE TRIGGER» или через SSMS (щелкните правой кнопкой мыши на триггере и выберите «Включить/отключить») , Конечно, я обязательно проверю ваш триггер в тестовом экземпляре, конечно, как вы упомянули, прежде чем применять его к живой системе. Мы используем триггеры с нашей ERP-системой для аналогичных целей, и обычно она работает нормально, но вы захотите проверить ее внимательно. –
Почему мы не можем использовать 'IF (@RowCount = 0)/* DO INSERT HERE * /'? Похоже, что это будет более эффективно. – Kiryl