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