我有以下触发器
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[TG_LT_box_name_delete]
ON [dbo].[lt_box_naming]
AFTER DELETE
AS
Set NoCount On
update a
set used_customer_no = NULL
-- select a.* , '' as '||||', b.*
from lt_facility_ref a
join LT_BOX_NAMING b on b.location = ((a.facility) + '/' + a.zone + '-' + a.row_box + '-' + convert(varchar,a.seat))
JOIN deleted i ON b.id_key = i.id_key
这是一个有点乱的触发器。
我有三张桌子一张主桌
lt_box_naming
插入和更新存储数据以及修改字段。它有一个位置字段,该位置字段是来自另一个表的多个字段的组合
lt_facility_ref
数据如下所示
this is lt_facility_ref
facility zone row_box seat seat_no used_customer_no
PRK Balcony B 33 17559 8626324
PRK Balcony B 34 15889 NULL
PRK Balcony B 35 17558 8626324
WZO Orchestra D 6 15890 NULL
WZO Orchestra D 7 17557 3147711
this is lt_facility_ref
id_key customer_no type location seat_no
1 8626324 I PRK/Balcony-A-1 17512
2 8626324 I PRK/Orchestra-B-101 8527
3 3147711 C PRK/CenterHouse-B-23 8526
4 1235878 I WZO/TopTier-EE-1 12222
将记录插入
lt\u box\u命名
插入触发器使用与上述更新相同的更新代码进行状态更新
used_customer_no
对于保存此帐户的客户,没有问题。
在非常罕见的情况下,我们需要执行相反的操作,在删除时执行相同的逻辑并更新
used\u customer\u编号
返回NULL以释放它。
连接的原因是因为它是这样构建的--数据来自
lt\U设施\U参考
并与大量其他数据一起存储在
lt\u box\u命名