Я синхронизую два отдельных приложения баз данных. Базы данных связаны с серверами. Один из них CRM, а один - ERP. Когда пользователь вводит одну из трех строк кода в столбце состояния таблицы quates в CRM, статус таблицы проекта для ERP должен обновляться в одной из трех текстовых строк.Триггер для обновления таблицы связанного сервера при вводе конкретных значений
CN=Converted
WO=Working
PN=Pending
CRM Котировки Таблица
CompanyID QuoteID Status
Пользователь вводит (1 из трех кодов)
CN
WO
PN
Таблица ERP проекта
CompanyID ProjectID Status
Статус обновлен до (1 из трех строк)
Converted
Working
Pending
Похоже, что это будет что-то вроде
UPDATE ERP.dbo.Projects
SET ERP.dbo.Projects.Status = 'Converted'
FROM Inserted.CRM.Projects
WHERE Inserted.CRM.Projects Status = 'CN'
INNER JOIN ERP.dbo.Project.ProjectID = CRM.dbo.Quotes.QuoteID
UPDATE ERP.dbo.Projects
SET ERP.dbo.Projects.Status = 'Working'
FROM Inserted.CRM.Projects
WHERE Inserted.CRM.Projects Status = 'WO'
INNER JOIN ERP.dbo.Project.ProjectID = CRM.dbo.Quotes.QuoteID
UPDATE ERP.dbo.Projects
SET ERP.dbo.Projects.Status = 'Pending'
FROM Inserted.CRM.Projects
WHERE Inserted.CRM.Projects Status = PN
INNER JOIN ERP.dbo.Project.ProjectID = CRM.dbo.Quotes.QuoteID
было бы лучше использовать случай или если заявление или использовать 3 отдельные триггеры для каждого кода?
База данных: SQL Server 2008 R2
Определенно не используйте 3 отдельных триггера. Это было бы совершенно безумно. Я бы сделал это одним оператором обновления с выражением case вместо 3 отдельных операторов обновления. И определенно НЕ утверждение IF, которое просто не имеет смысла в этом контексте вообще. –