我在表A上有一个触发器,如下所示: 我试图将从表A插入或更新的记录移动到表B.表A中的记录多次更新,并希望记录每次更新。因此,表B与表A完全相同,只有3个字段,如datestamp,user和id(primarykey)
ALTER TRIGGER [dbo].[catchupdate]
ON Table A
AFTER INSERT,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
declare @userid varchar(128)
declare @rolereqid varchar(128)
DECLARE @currDate DATETIME;
SET @currDate = GETDATE();
select @userid = system_user
select @rolereqid = [RoleRequestID] from TableA
Insert into TableB
(RoleRequestId, ......list...)
select * from RoleRequests
where RoleRequestId = @rolereqid
Update TableB
set User_Name1 = @userid, dateupdated = @currDate
where id = @@IDENTITY
现在插入的记录始终是表A的最后一条记录。我不确定我是否正确捕获了记录,即表A中更新的记录ID。 从TableA中选择@rolereqid = [RoleRequestID]
答案 0 :(得分:0)
select @rolereqid = [RolerequestID] from INSERTED
......而不是......
select @rolereqid = [RolerequestID] from TableA
你应该得到新插入记录的RoleRequestID。 我想你还必须更正示例代码中的其他问题...例如,你从TableB中选择“RoleRequest”表...不应该将TableA作为源代码吗?