SQL Serverのトリガーとストアドプロシージャ

時々更新フィールドは、いくつかの条件に基づいて、別のテーブルを更新する必要性が高まっている、楽しい上のストアドプロシージャを呼び出すために、この時間は、ここではSQL Serverのストアドプロシージャです

use Manager
declare my_cursor cursor scroll dynamic --scroll表示可以向前或向后移动   dynamic:表示可写也可读,
for
select user_id,address from dbo.teacher --定义my_cursor 游标

open my_cursor --打开游标
declare @address nvarchar(128) --定义一个变量
declare @id nvarchar(128) --定义一个变量
fetch next from my_cursor into @id,@address --游标停在第一条记录前面,第一次执行,测试有没有记录存在
while @@fetch_status=0 --取数据,直到-2即没有记录
begin
		PRINT  @id+'  '+@address  --fetch next from my_cursor
		update dbo.electric set address=@address where user_id=@id;--更新另外一个表中的数据
		update dbo.water set address=@address where user_id=@id;--更新另外一个表中的数据
		FETCH NEXT FROM  my_cursor  INTO  @id,@address
end

--fetch first from my_cursor into @name
--print @name
 --update temp set F9='zzg' where current of my_cursor 
/* delete from 个人资料 where current of my_cursor */
--commit;--提交事务
    close my_cursor--关闭游标
    deallocate my_cursor--释放资源

トリガー
更新データと、データテーブルの変更、他のテーブル内のデータを更新する必要がある、この時間は、トリガー価格は、その後にデータを記述する必要はありません
削除トリガー
BEGIN
IFアップデート(USER_IDを) -削除または更新トリガ
可変翼- ; DECLAREは、VARCHAR(50)@id
= ID @選択deteledからUSER_IDと、 -deteled 現在の行表す削除データ
USER_ID = @ ID削除dbo.electricと、 - テーブルを更新するための追加データを
DELETE dbo.water USER_ID = @ ID; - テーブル更新のための追加データ
ENDの
更新トリガを(教師この例では、テーブル内のアドレスを変更することで、更新アドレスの他のテーブルをトリガ)
BEGIN
IF更新(アドレス)
DECLARE @ VARCHAR ID(50);
DECLARE @address VARCHAR(50)
に挿入ID = USER_IDからSELECT @;変更されたデータを-inserted現在の行が表す
挿入からアドレス=アドレス@選択; -inserted 変更されたデータは、現在の行を表し
更新dbo.electricをUSER_ID =アドレス@セットアドレス= @ ID; - テーブルを更新するための追加データ
アドレス@セットアドレスdbo.water更新= USER_ID = @ ID; - テーブル更新のための追加データ
ENDを

公開された34元の記事 ウォンの賞賛6 ビュー3661

おすすめ

転載: blog.csdn.net/qq_35986709/article/details/89434813