sqlServer 基於游標建立出發器

2021-08-09 21:44:34 字數 930 閱讀 5197

觸發器的基本常識:我們在監控表中資料變化時會用到出發器,但是在乙個表中執行批量插入或者修改時,我們會發現我們建立的簡單的觸發器所檢測到的資料只有一條,其他資料監測不到了。這就需要我們在建立觸發器時使用游標進行處理。

游標的基本概念:我們可以將游標理解成開闢的一塊基於記憶體的臨時表,表中記錄了我們乙個批次下插入的所有資料

而我們需要做的就是通過迴圈遍歷將這些資料讀取出來。

簡單案例: 我們建立 person 和myperson兩張表,通過建立出發器將person中的資料變化插入的myperson表中。

**如下:

create trigger [dbo].[mytrigger]

on [dbo].[person]

for insert

asdeclare p_cursor cursor scroll for

//declar 宣告游標 ,cursor 為游標的關鍵字 ,

select id ,name from inserted;  //出發器檢測的資料

open p_cursor           //開啟游標

declare @name varchar(20),@id int

fetch from p_cursor into @id,@name  //fetch 關鍵字 取cursor中的資料

while @@fetch_status=0             //返回游標遍歷的值,作為迴圈結束的條件

begin

insert into myperson values (@name)

fetch next from p_cursor into @id,@name    //取下一條資料,否則會死迴圈,按照順序匹配字段值

endclose p_cursor         //關閉游標

deallocate p_cursor //刪除游標釋放記憶體

Sql Server 建立游標

定義變數 declare studentname varchar 100 定義游標 declare updateteachername cursor for select studentname from studentinfo 開啟游標 open updateteachername 遍歷游標,且將...

Sql Server 游標的建立

sql server 游標建立 use test 記得改資料庫 go 不會寫 的程式猿 set ansi nulls on goset quoted identifier on gocreate procedure dbo pro add tests 記得改名稱 asbeginif exists s...

mysql游標很慢 Sqlserver 游標 慢

net專案中有個模組做統計功能,原先方法速度很慢,所以需要改進,統計結果如下圖 下圖接上圖後面 原先的處理方式是,這些資料分別涉及到四五張表,前台從資料庫中查詢出需要的資料集,然後分別遍歷這些資料集拼接html字串顯示在介面上。優化思考 net專案中有個模組做統計功能,原先方法速度很慢,所以需要改進...