我有一个名为 GLOBAL_TRACKING 的查找表,它需要与另一个表 USER 中的数据同步。由于前端用户帐户创建的特定实例中的代码存在一些问题(我知道 - 理想情况下,这应该在代码中修复,但我没有该选项),我在 GLOBAL_TRACKING 中获得条目为不应为 NULL 的字段设置 NULL 值的表。由于这只发生在初始帐户创建时,我可以假设 USER 记录的 LOGIN_ID 字段应始终与 GLOBAL_TRACKING 表的 ALT_ID 字段匹配。
我想对这些情况进行检查,如果它为空,则从 USER 表中提取 LOGIN_ID 值,并在插入之前将其插入 GLOBAL_TRACKING 表的 ALT_ID 字段。我试过做一个常规的插入触发器(在插入时更新它),但没有成功。我目前正在尝试“INSTEAD OF INSERT”触发器,并遇到类似的错误(它被困在应用程序级别,除了:“无效的对象名称 'UPDATED'。”)。这样的事情可能吗?这是我的而不是触发器:
DECLARE @GlobalID as NVARCHAR(50)
DECLARE @AlternateID as NVARCHAR(255)
SET @GlobalID = (SELECT GLOBAL_ID FROM inserted)
SET @AlternateID = (SELECT ALT_ID FROM inserted)
IF (@AlternateID IS NULL
AND ((SELECT COUNT(LOGIN_ID)
FROM USER
WHERE USER_ID = @GlobalID) > 0))
BEGIN
SET @AlternateID = (SELECT LOGIN_ID
FROM USER
WHERE USER_ID = @GlobalID)
BEGIN
UPDATE GLOBAL_TRACKING
SET ALT_ID = @AlternateID
WHERE GLOBAL_ID = @GlobalID
END
END