Asp.netメンバーシップスキーマを使用するサイトがあります。新しい行のuser_idとuser_nameを別のテーブルに挿入したaspnet_usersテーブルにトリガーを設定したいと思います。
最後の挿入から値を取得するにはどうすればよいですか?
最後のdate_createdまでに選択できますが、臭いのようです。もっと良い方法はありますか?
sQLサーバーでこれを試してください
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 Ref
SQL Serverトリガーには、挿入および削除と呼ばれる2つの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
トリガーを記述するとき、情報のバッチ全体に対して1回だけ動作することを覚えておいて、行ごとに処理しません。したがって、コード内の複数行の挿入を考慮してください。
トリガーのコンテキストにいるときは、テーブルに挿入されたばかりのすべての行を含む論理テーブルINSERTEDにアクセスできます。 Insertedからの選択に基づいて、他のテーブルへの挿入を作成できます。
Create
trigger `[dbo].[mytrigger]` on `[dbo].[Patients]` after update , insert as
begin
--Sql logic
print 'Hello world'
end