[英]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.