我有如下2张桌子
表1:
r_report8
工作订单号 | 报告8a | 报告_项目7 |
---|---|---|
EGR220511003493 | 56 | 1 |
表2:
rjob_header
工作订单号 | 报告_项目7 |
---|---|
EGR220511003493 | 1 |
我已经在两个表上设置了触发器
表1:
r_report8
DECLARE @workorderno nvarchar(15),@report_item7 int
SELECT @workorderno = WORK_ORDER_NO
FROM inserted
IF (UPDATE(REPORT8A))
BEGIN
UPDATE R_REPORT8
SET REPORT_ITEM7 = (CASE WHEN (REPORT8A<>'') THEN '1' ELSE '0' END)
WHERE @workorderno = WORK_ORDER_NO
END
表2:
rjob_header
DECLARE @workorderno nvarchar(15), @report_item7 int
SELECT @workorderno = WORK_ORDER_NO
FROM inserted
UPDATE RJOB_HEADER
SET REPORT_ITEM7 = (CASE
WHEN (SELECT DISTINCT b.report_item7
FROM rjob_header a
INNER JOIN r_report8 b ON b.work_order_no = a.work_order_no
WHERE a.work_order_no = @workorderno) IS NOT NULL
THEN '1'
ELSE '0'
END)
WHERE @workorderno = WORK_ORDER_NO
END
2张表格将通过我们的系统表格同时更新。
(表1)dbo.r_report8.report8a 更新时。列 report_item7 将更改为“1”,并且(表 2)dbo.rjob_header.report_item7 也将更改为“1”
但是如果我删除(Table1)dbo.r_report8中的记录,则report_item7列仍然是'1'。
当从(Table1) dbo.r_report8,(Table2) dbo.rjob_header.report_item7 删除的记录变回'0'或null时,我该怎么办?
您可以编写一个删除触发器,如下所示:
CREATE TRIGGER tr_r_report8_after_delete
ON dbo.r_report8
AFTER DELETE
AS
BEGIN
DECLARE @workorderno nvarchar(15)
SELECT @workorderno = WORK_ORDER_NO
FROM deleted
-- Check if any related records exist in r_report8
IF NOT EXISTS (SELECT 1 FROM r_report8 WHERE work_order_no = @workorderno)
BEGIN
-- Update rjob_header to set report_item7 to 0
UPDATE rjob_header
SET report_item7 = 0
WHERE work_order_no = @workorderno
END
END