Sql server Sql server触发器是否从两个不同的表向一个表插入值?
我有这些表Sql server Sql server触发器是否从两个不同的表向一个表插入值?,sql-server,Sql Server,我有这些表tbl_用户,tbl_预付费,以及tbl_过期 我在tbl\u preadvanced上使用触发器,从tbl\u preadvanced中删除卡号,并在输入后立即将其插入tbl\u Expire 现在我想在同一个触发器中将userID从tbl\u用户移动到tbl\u Expire 我怎么能做到 以下是我到目前为止的情况: alter TRIGGER trgAfterUpdate ON [dbo].[tbl_Prepaid] FOR UPDATE AS declare @id_
tbl_用户
,tbl_预付费
,以及tbl_过期
我在tbl\u preadvanced
上使用触发器,从tbl\u preadvanced
中删除卡号,并在输入后立即将其插入tbl\u Expire
现在我想在同一个触发器中将userID
从tbl\u用户
移动到tbl\u Expire
我怎么能做到
以下是我到目前为止的情况:
alter TRIGGER trgAfterUpdate ON [dbo].[tbl_Prepaid]
FOR UPDATE
AS
declare @id_ppaid int;
declare @serial nvarchar(100);
declare @balance nvarchar(100);
declare @price int;
select @id_ppaid=i.id from inserted i;
select @serial=i.serial from inserted i;
select @balance=i.balance from inserted i;
select @price=i.price from inserted i;
if update(used)
insert into tbl_Expire(id_Pripaid,serial,balance,price)
values(@id_ppaid,@serial,@balance,@price);
delete from tbl_Prepaid where id=@id_ppaid;
PRINT 'After updates trigger fired.'
GO
只需从所需的表中获取变量中的userid值,并在insert语句中添加变量(@userid):
Declare @userid int
Select @userid=userid from tablename
insert into tbl_Expire(id_Pripaid,serial,balance,price,userid)
values(@id_ppaid,@serial,@balance,@price,@userid);
如果触发此触发器的更新影响多行,会发生什么情况?哦,还有,你希望我们如何知道哪个用户属于你从
tbl_preadvanced
移动的行?@Aaron Bertrand我在我的网站上有session[“UserID”]值,例如UserID等于2或3任何数字取决于用户id:)你的触发器在你的网站上看不到你的session变量-你需要让它对SQL Server可见。我的建议是使用存储过程来执行更新,而不是依赖触发器,并将用户id传递到存储过程中。谢谢,我必须使用存储过程。谢谢,但问题是当用户登录到所有者帐户,然后添加卡号,然后按提交按钮时,我想将id值传递到此触发器中我需要使用存储过程,但我如何才能使用id?