国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > SQL Server > 正文

SQL SERVER的行式觸發器

2024-08-31 00:51:40
字體:
來源:轉載
供稿:網友

曾經以為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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 白玉县| 石城县| 九龙坡区| 巴楚县| 九寨沟县| 会宁县| 临夏市| 拜城县| 灵丘县| 桃园县| 容城县| 泾阳县| 乌鲁木齐县| 旬阳县| 兴城市| 台州市| 常州市| 双峰县| 宜丰县| 溆浦县| 南陵县| 金华市| 巩留县| 和静县| 卫辉市| 肇东市| 景泰县| 齐齐哈尔市| 丰镇市| 清河县| 博爱县| 晴隆县| 乐清市| 孟津县| 灌阳县| 冕宁县| 赣州市| 伊宁县| 聂拉木县| 汉源县| 瑞金市|