【发布时间】:2020-10-09 15:49:44
【问题描述】:
我正在使用 MS-SQL 我正在尝试创建一个触发器,以使旧文档保持同步。
我在文件顶部有这个声明,它将从没有关联文件路径的公司银行账户中删除文档 ID
UPDATE CompanyBankAccounts
SET SignatureDocumentId = NULL
FROM CompanyBankAccounts cba
INNER JOIN INSERTED i on cba.CompanyBankAccountID = i.CompanyBankAccountID
WHERE (i.SignatureFile IS NULL OR i.SignatureFile = '')
AND i.SignatureDocumentId IS NOT NULL
但是在我继续做更多依赖于插入表的操作之后,例如
IF (
(SELECT COUNT(*)
FROM Inserted i
LEFT JOIN Documents d on d.documentid = i.SignatureDocumentId
WHERE (SignatureFile IS NOT NULL AND SignatureFile != '')
AND ((SignatureFile != d.DocumentPath) OR SignatureDocumentId IS NULL)
) > 0)
BEGIN
--Do Sync work
END
在初始更新语句之后,插入的行现在仍然有 documentId,有没有办法确保插入的行适当地反映更新所做的更改?
【问题讨论】:
-
仅供参考
UPDATE CompanyBankAccounts应该是UPDATE cba。 SQL Server 应该足够聪明地意识到对CompanyBankAccounts的新引用是同一个,但这是一个好习惯。 -
@Larnu 谢谢,我不经常写 SQL,所以这些小技巧很有帮助