繁体   English   中英

Sql Server触发器将值从新行插入另一个表

[英]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表。

您可以在触发器中使用OLDNEW来访问在该触发器中已更改的那些值。 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM