输入特定值时触发更新链接服务器 table
Trigger to update a linked server table when specific values are entered
我正在同步两个单独的数据库应用程序。数据库是链接服务器。一种是 CRM,一种是 ERP。当用户在 CRM 的条件 table 状态列中输入三个代码字符串之一时,ERP 的项目 table 状态需要在三个文本字符串之一时更新。
CN=Converted
WO=Working
PN=Pending
CRM 行情 Table
CompanyID QuoteID Status
用户输入(三个代码之一)
CN
WO
PN
ERP 项目Table
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服务器 2008 R2
这里没有太多细节,但是您发布的更新中存在一些逻辑缺陷。我怀疑你想要更多这样的东西。
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
我正在同步两个单独的数据库应用程序。数据库是链接服务器。一种是 CRM,一种是 ERP。当用户在 CRM 的条件 table 状态列中输入三个代码字符串之一时,ERP 的项目 table 状态需要在三个文本字符串之一时更新。
CN=Converted
WO=Working
PN=Pending
CRM 行情 Table
CompanyID QuoteID Status
用户输入(三个代码之一)
CN
WO
PN
ERP 项目Table
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服务器 2008 R2
这里没有太多细节,但是您发布的更新中存在一些逻辑缺陷。我怀疑你想要更多这样的东西。
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