sql - SQL Server 触发器更新另一个表的列
问题描述
我有两个名为Table A
和的 SQL Server 表Table B
。我有一个应用程序,它同时插入一行Table A
和三行Table B
。正如您在下面的屏幕截图中看到的那样,我们可以根据它们ID
在Table
A中的TransID
列和在中的列来链接这些插入的记录Table B
。
在表 B 上插入数据期间,如果插入的 3 行中的任何行包含列中调用的值Printed
,Printed
我也想更新我Table A
的相关记录PrintStatus
列Printed
。
如何为此编写 SQL Server 触发器?
解决方案
最好的解决方案是在您的代码(应用程序)中执行此操作,但如果没有办法,您可以为表 B 编写插入后触发器,如下面的触发器示例:
CREATE TRIGGER [dbo].[YourTrigger] ON [dbo].[TableB]
AFTER INSERT
AS
DECLARE @id INT
BEGIN
SET NOCOUNT ON;
SET @id = (SELECT DISTINCT ID FROM Inserted)
IF EXISTS (SELECT * FROM Inserted WHERE Printed='Printed')
UPDATE TableA
SET PrintStatus='Printed'
WHERE ID = @id
END
愿这对你有帮助
推荐阅读
- c# - 在 Hololens 中运行时未调用 OnPhotoCaptureCreated
- python - Python在数组中找到最常见的值
- c# - 授权属性和角色
- django - 如果用户忘记了密码,我如何给他发送重置链接?
- r - 在 R sqldf 包中按类别进行索引并按列排序
- mysql - mysql多个值()包含,需要根据条件更新
- elasticsearch - 分布式爬取和限速/流量控制
- powershell - 具有复合键的自定义 powershell DSC 资源
- amazon-web-services - 带有 Lambda 代理的 AWS API Gateway 提供空事件数据
- azure - 从 DBFS 挂载到 Azure Data Lake 创建新表