我有一個僱員表(em),其中包含樓層標識(fl_id)和房間標識(rm_id)等。在某些情況下(當em_loc_cnt = 0時),我想將em記錄的fl_id和rm_id設置爲null。以下是我的代碼到目前爲止。使用和UPDATE觸發器修改正在更新的行
我不確定如何在註釋行中引用fl_id & rm_id。我會碰到問題,因爲這個觸發器正在被更新的EM記錄的結果被調用,我正在更新觸發器中的相同記錄?
對此提出建議?
IF EXISTS (SELECT * FROM [sysobjects] WHERE [name] = 'em_upd_self_serv_t' AND [type] = 'TR')
BEGIN
DROP TRIGGER [dbo].[em_upd_self_serv_t]
END
GO
CREATE TRIGGER [dbo].[em_upd_self_serv_t]
ON [dbo].[em]
AFTER UPDATE
AS
BEGIN
DECLARE @em_id VARCHAR(35),
@em_loc_cnt INT;
SET @em_id = (SELECT em_id FROM inserted);
SET @em_loc_cnt = (SELECT COUNT(*) FROM emlocs WHERE em_id = @em_id);
IF (@em_loc_cnt = 0)
BEGIN
-- I want to set the fl_id and the rm_id to NULL
END
END;
對於SQL Server 2005 ** **和更新,我總是建議使用新的,重點目錄視圖像'sys.triggers'而不是使用舊的,不推薦使用的'sysobjects',並且必須指定要查找的對象的類型.... –
請問您可以將您的列的名稱稍微模糊一點,但意義不大?此外,如果更新影響多於一行,觸發器將會崩潰。 –