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

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

SQL SERVER的行式觸發器

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

曾經以為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 數據庫
相關文章:
主站蜘蛛池模板: 海城市| 大关县| 西安市| 泰和县| 新田县| 绥江县| 吴堡县| 枣阳市| 健康| 沙坪坝区| 靖西县| 仁化县| 常熟市| 潞西市| 大荔县| 淮安市| 宜都市| 德保县| 丰县| 华容县| 东港市| 博白县| 石景山区| 鲁山县| 来宾市| 塔河县| 库尔勒市| 米林县| 红河县| 沂水县| 织金县| 梨树县| 辉南县| 尚志市| 丹凤县| 洛宁县| 横峰县| 东安县| 吉林省| 循化| 交城县|