【发布时间】:2017-01-11 16:29:19
【问题描述】:
我正在同步两个独立的数据库应用程序。数据库是链接服务器。一种是CRM,一种是ERP。当用户在CRM的quates表状态栏中输入三个代码字符串之一时,当三个文本字符串之一时,需要更新ERP的项目表状态。
CN=Converted
WO=Working
PN=Pending
CRM 报价表
CompanyID QuoteID Status
用户输入(三个代码中的一个)
CN
WO
PN
ERP项目表
CompanyID ProjectID Status
状态更新为(三个字符串中的一个)
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
最好使用 case 或 if 语句,还是为每个代码使用 3 个单独的触发器?
数据库:SQL Server 2008 R2
【问题讨论】:
-
绝对不要使用 3 个单独的触发器。那将是完全疯狂的。我会用一个 case 表达式而不是 3 个单独的更新语句来做一个更新语句。绝对不是 IF 语句,在这种情况下根本没有意义。
标签: sql-server stored-procedures triggers sql-update linked-server