簡體   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