CHECKINOUT
テーブルにデータを挿入した後、別のテーブルにデータを挿入するためにこのトリガを書きました。SQL Server:Insert Triggerの後に別のテーブルを更新する
ただし、Att_process
テーブルにはデータが挿入されません。 SQL Serverにエラーは表示されません。この問題を理解する手助けはできますか?
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER [dbo].[trgAfterInsert] ON [dbo].[CHECKINOUT]
AFTER INSERT
AS
DECLARE @uid INT;
DECLARE @checkin DATETIME;
SELECT @uid = i.USERID
FROM [CHECKINOUT] i;
SELECT @checkin = i.CHECKTIME
FROM [CHECKINOUT] i;
IF(DATEPART(HOUR, @checkin) < 12)
BEGIN
INSERT INTO Att_process (USERID, checkin_time)
VALUES (@uid, @checkin);
END;
ELSE
BEGIN
INSERT INTO Att_process (USERID, checkout_time)
VALUES (@uid, @checkin);
END;
'SELECT @uid = i.USERID FROM inserted i; SELECT @checkin = i.CHECKTIME FROM inserted i; ' – artm
@artm:それは**道のりではありません!**'挿入されました '*** ***には複数の行が含まれます - どちらがあなたですかここで選択しますか? 'Inserted'の**複数の行を適切に扱うためのトリガを書く必要があります! –
@marc_s - ハハはよく言った!それは悪い修正でした –