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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

SQL SERVER的行式觸發(fā)器

瀏覽:3日期:2023-11-02 13:36:21

曾經(jīng)以為SQL SERVER的觸發(fā)器只能觸發(fā)單行,也就是說如果一個(gè)delete觸發(fā)器,如果同時(shí)刪除多行時(shí),只會(huì)對(duì)第一條記錄觸發(fā),后來發(fā)現(xiàn)了不是人家SQL SERVER不支持,而是偶腦子笨沒發(fā)現(xiàn)。

其實(shí)inserted和deleted兩張內(nèi)部表存放了所有要插入或要?jiǎng)h除的記錄,可以用cursor逐次訪問里面的每條記錄,下面是一個(gè)示例,該觸發(fā)器將要?jiǎng)h除的記錄轉(zhuǎn)移到另一張表中:

第一步,創(chuàng)建這兩張表

create table table1([id] int primary key, [value] varchar(100))create table table2([id] int primary key, [value] varchar(100))第二步,插入測(cè)試數(shù)據(jù)

declare @i intset @i = 1while @i <= 100begin;insert into table1([id], [value]);values(@i, cast(@i as varchar));set @i = @i + 1end創(chuàng)建table1的delete觸發(fā)器

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現(xiàn)在對(duì)table1執(zhí)行delete語句,發(fā)現(xiàn)所有被刪除的記錄都記錄在在table2中了

delete from table1

相關(guān)文章:
主站蜘蛛池模板: 彰化市| 涪陵区| 当阳市| 嘉峪关市| 郎溪县| 西畴县| 包头市| 新田县| 宁明县| 罗山县| 梅河口市| 南丹县| 郎溪县| 丰宁| 东至县| 忻城县| 宣威市| 大同市| 乌拉特中旗| 佛山市| 荣昌县| 麻栗坡县| 龙泉市| 长丰县| 介休市| 龙岩市| 北安市| 黄浦区| 平潭县| 和林格尔县| 桂东县| 鸡泽县| 沾益县| 霍林郭勒市| 霍城县| 铁岭县| 娄底市| 宝兴县| 两当县| 五寨县| 石楼县|