0

我正在同步两个单独的数据库应用程序。数据库是链接的服务器。一个是CRM,一个是ERP。当用户在CRM的quates表状态列中输入三个代码字符串中的一个时,需要在三个文本字符串之一时更新ERP的项目表状态。当输入特定值时触发更新链接服务器表

CN=Converted 
WO=Working 
PN=Pending 

CRM行情表

CompanyID QuoteID Status 

用户输入(3 1的代码)

CN 
WO 
PN 

ERP项目表

CompanyID ProjectID Status 

状态更新为(3 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的

+0

绝对不要使用3个单独的触发器。这将是完全疯狂的。我会使用case表达式而不是3个独立的更新语句来创建一个更新语句。绝对不是IF声明,在这方面根本没有意义。 –

回答

0

不是很多这里的细节,但你必须在你的更新一些逻辑上的缺陷张贴。我怀疑你想要更多这样的东西。

UPDATE p 
SET Status = 
    case i.Status when 'CN' then'Converted' 
     when 'WO' then 'Working' 
     where 'PN' then 'Pending' 
    end 
from inserted i 
INNER JOIN CRM.dbo.Projects p on p.ProjectID = i.QuoteID 
相关问题