ALTER TRIGGER tr_EMPLOYEE2_FORINSERT
ON EMPLOYEE2
FOR INSERT
AS
BEGIN
-- SELECT * FROM INSERTED --INSERTED Table is a special table created for the purposes of Triggers, it is available only in the context of the trigger.
DECLARE @ID INT
SELECT @ID = ID FROM INSERTED
INSERT INTO EMPAUDIT
VALUES('New Employee with id = ' + cast(@id as nvarchar(5)) + ' is added at ' + cast(getdate() as nvarchar(20)))
END
質問する
25 次
1 に答える
0
a. あなたのEMPAUDIT
テーブルがどのように見えるかわかりません。ただし、複数の列があると仮定すると(ほとんどのテーブルがそうです)、INSERT
ステートメントに列リストを使用する必要があります。
INSERT INTO EMPAUDIT (Column_To_Insert_Into)
VALUES('New Employee with id = ' + cast(@id as nvarchar(5)) +
' is added at ' + cast(getdate() as nvarchar(20)))
b. ただし、トリガーは実際にはまだ壊れています。なんで?複数の行inserted
を含めることができるため(または行を含まない)。したがって、実際に必要なのは次のとおりです。
INSERT INTO EMPAUDIT (Column_To_Insert_Into)
SELECT 'New Employee with id = ' + cast(i.id as nvarchar(5)) +
' is added at ' + cast(getdate() as nvarchar(20))
FROM inserted i
トリガーに記述した残りのコードは必要ありません
于 2013-10-30T07:26:53.400 に答える