国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

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

講解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 數據庫
主站蜘蛛池模板: 南华县| 天全县| 白河县| 桓台县| 庐江县| 西乌珠穆沁旗| 额济纳旗| 北碚区| 安国市| 枣阳市| 嘉祥县| 龙岩市| 柳河县| 仲巴县| 桦甸市| 炎陵县| 封丘县| 定日县| 太湖县| 武功县| 攀枝花市| 凯里市| 茌平县| 北流市| 东乡族自治县| 克山县| 台东县| 黄梅县| 马鞍山市| 安新县| 三明市| 双鸭山市| 麻城市| 观塘区| 博客| 万源市| 溧水县| 昆明市| 洛川县| 通道| 红安县|