![](/img/trans.png)
[英]SQL Server trigger insert values from new row into another table with many-to-many relationship
[英]Sql Server trigger insert values from new row into another table
我有一个使用asp.net成员资格模式的网站。 我想在aspnet_users表上设置一个触发器,它将user_id和新行的user_name插入到另一个表中。
如何从最后一次插入中获取值?
我可以选择最后一个date_created,但这看起来很臭。 有没有更好的办法?
试试这个sql server
CREATE TRIGGER yourNewTrigger ON yourSourcetable
FOR INSERT
AS
INSERT INTO yourDestinationTable
(col1, col2 , col3, user_id, user_name)
SELECT
'a' , default , null, user_id, user_name
FROM inserted
go
您使用插入触发器 - 在触发器内,插入的行项将作为逻辑表INSERTED
公开,其具有与定义触发器的表相同的列布局。
删除触发器可以访问名为DELETED
的类似逻辑表。
更新触发器可以访问包含更新值的INSERTED
表和包含要更新的值的DELETED
表。
您可以在触发器中使用OLD
和NEW
来访问在该触发器中已更改的那些值。 Mysql参考
在SQL Server触发器中,您有两个名为inserted和deleted的psdeuotable。 它们包含记录的旧值和新值。
因此,在触发器内(您可以轻松查找创建触发器部件),您可以执行以下操作:
Insert table2 (user_id, user_name)
select user_id, user_name from inserted i
left join table2 t on i.user_id = t.userid
where t.user_id is null
在编写触发器时记住它们对整批信息执行一次,它们不会逐行处理。 因此,在代码中考虑多行插入。
当您处于触发器的上下文中时,您可以访问逻辑表INSERTED,其中包含刚刚插入表中的所有行。 您可以根据从Inserted中选择的内容将插入内容构建到另一个表。
Create
trigger `[dbo].[mytrigger]` on `[dbo].[Patients]` after update , insert as
begin
--Sql logic
print 'Hello world'
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.