久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術文章
文章詳情頁

講解Microsoft SQL Server的行式觸發器

瀏覽:2日期:2023-11-05 19:42:43

曾經以為SQL SERVER的觸發器只能觸發單行,也就是說如果一個delete觸發器,如果同時刪除多行時,只會對第一條記錄觸發,后來發現了不是人家SQL SERVER不支持,而是偶腦子笨沒發現。

其實inserted和deleted兩張內部表存放了所有要插入或要刪除的記錄,可以用cursor逐次訪問里面的每條記錄,下面是一個示例,該觸發器將要刪除的記錄轉移到另一張表中:

第一步,創建這兩張表

create table table1([id] int primary key, [value] varchar(100))create table table2([id] int primary key, [value] varchar(100))

第二步,插入測試數據

declare @i intset @i = 1while @i <= 100begin insert into table1([id], [value]) values(@i, cast(@i as varchar)) set @i = @i + 1end

創建table1的delete觸發器

create trigger tr_d_table1 on table1 for deleteasbegin declare @id int, @value varchar(100) declare cur_del cursor local forward_only for select [id], [value] from deleted open cur_del fetch next from cur_del into @id, @value while @@fetch_status = 0 begin insert into table2([id], [value]) values(@id, @value) fetch next from cur_del into @id, @value end close cur_del deallocate cur_del end

現在對table1執行delete語句,發現所有被刪除的記錄都記錄在在table2中了

delete from table1

標簽: Sql Server 數據庫
主站蜘蛛池模板: 延安市| 孟连| 裕民县| 方山县| 靖西县| 恭城| 合水县| 枣强县| 临潭县| 兰考县| 瑞金市| 海林市| 勃利县| 忻城县| 靖宇县| 张北县| 安多县| 南安市| 化隆| 连州市| 盘山县| 阿合奇县| 秭归县| 墨脱县| 铜山县| 乐昌市| 通渭县| 景泰县| 东山县| 昌图县| 三河市| 乡宁县| 龙门县| 邹平县| 色达县| 华亭县| 光泽县| 枣强县| 银川市| 台州市| 葫芦岛市|