xecuted触发器工作。如果使用Output子句,则应保证将数据插入该表的唯一SQL语句是它,以保持两个表之间的一致性。SELECT@uid=i.USERID FROM inserted i;选择@checkin=i.CHECKTIME FROM ins
xecuted触发器工作。如果使用Output子句,则应保证将数据插入该表的唯一SQL语句是它,以保持两个表之间的一致性。SELECT@uid=i.USERID FROM inserted i;选择@checkin=i.CHECKTIME FROM ins,sql,sql-server,triggers,Sql,Sql Server,Triggers,xecuted触发器工作。如果使用Output子句,则应保证将数据插入该表的唯一SQL语句是它,以保持两个表之间的一致性。SELECT@uid=i.USERID FROM inserted i;选择@checkin=i.CHECKTIME FROM inserted i@artm:这不是办法插入的将包含多行-您在此处选择哪一行??您需要编写触发器以正确处理插入的中的多行@马克-哈哈,说得好!这是一个错误的修复从插入的i中选择@uid=i.USERID;选择@checkin=i.CHECKTIME
xecuted触发器工作。如果使用Output子句,则应保证将数据插入该表的唯一SQL语句是它,以保持两个表之间的一致性。
SELECT@uid=i.USERID FROM inserted i;选择@checkin=i.CHECKTIME FROM inserted i代码>@artm:这不是办法<代码>插入的
将包含多行-您在此处选择哪一行??您需要编写触发器以正确处理插入的中的多行@马克-哈哈,说得好!这是一个错误的修复从插入的i中选择@uid=i.USERID;选择@checkin=i.CHECKTIME FROM inserted i代码>@artm:这不是办法<代码>插入的
将包含多行-您在此处选择哪一行??您需要编写触发器以正确处理插入的中的多行@马克-哈哈,说得好!这是一个糟糕的解决办法,这不是办法<如果您的INSERT
插入了多个项目,则code>Inserted
将包含多行-您在此处选择哪一项??您需要编写触发器以正确处理插入的中的多行!你能告诉我如何在Mysql上做同样的事情吗?因为我在Mysql中也有相同的表,所以这不是解决问题的方法<如果您的INSERT
插入了多个项目,则code>Inserted
将包含多行-您在此处选择哪一项??您需要编写触发器以正确处理插入的中的多行!你能告诉我如何在Mysql上做同样的事情吗,因为我在Mysql alsoHi Eraper中有相同的表,你能告诉我如何在Mysql上做同样的事情吗,因为我在Mysql alsoHi Eraper中有相同的表,你能告诉我如何在Mysql上做同样的事情吗
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;
CREATE TRIGGER [dbo].[trgAfterInsert] ON [dbo].[CHECKINOUT]
AFTER INSERT
AS
-- grab all the rows from the "Inserted" pseudo table
-- and insert into the "checkin_time" column, if the value
-- of the HOUR is less than 12
INSERT INTO Att_process (USERID, checkin_time)
SELECT
i.USERID, i.CHECKTIME
FROM
Inserted i
WHERE
DATEPART(HOUR, i.CHECKTIME) < 12
-- grab all other rows (HOUR is greater than or equal to 12)
-- and insert into the "checkout_time" column
INSERT INTO Att_process (USERID, checkout_time)
SELECT
i.USERID, i.CHECKTIME
FROM
Inserted i
WHERE
DATEPART(HOUR, i.CHECKTIME) >= 12
DECLARE @uid INT;
DECLARE @checkin DATETIME;
SELECT @uid = USERID FROM inserted
SELECT @checkin = CHECKTIME FROM inserted
ALTER TRIGGER [dbo].[trgAfterInsert] ON [dbo].[CHECKINOUT]
AFTER INSERT
AS
INSERT INTO Att_process (USERID, checkin_time, checkout_time)
select
USERID,
case when DATEPART(HOUR, CHECKTIME) < 12 then CHECKTIME else null end,
case when DATEPART(HOUR, CHECKTIME) < 12 then null else CHECKTIME end
FROM inserted