sqlserver中触发器+游标操作实现_MsSql

复制代码 代码如下:

Create trigger tri_wk_CSVHead_History on wk_CSVHead_History
--声明一个tri_wk_CSVHead_History触发器,
instead of insert ---插入操作被代替执行下面的操作
as
begin
declare YB cursor --声明一个游标
for
 select NoteNO from inserted--这里的NoteNO要和下面的匹配
 open YB
  declare @NoteNO varchar(50)--这里的NoteNO要和上面的匹配,定义一个游标变量@NoteNO,用来操作insered表中的NoteNo.
  fetch next from YB into @NoteNO--这里的NoteNO要是上面的匹配,移动游标
  while(@@fetch_status=0)--0操作成功,-1 FETCH 语句失败或此行不在结果集中,-2 被提取的行不存在
  begin
  delete from wk_CSVDetail_History where NoteNO=@NoteNO
   delete from wk_CSVHead_History where NoteNO=@NoteNO
  fetch next from YB into @NoteNO --继续移动游标,直到@@fetch_status不等于时.
   end
close YB --关闭游标
deallocate YB --释放游标
insert into wk_CSVHead_History select * from inserted
end

时间: 2024-12-05 03:21:03

sqlserver中触发器+游标操作实现_MsSql的相关文章

sqlserver中触发器+游标操作实现

复制代码 代码如下: Create trigger tri_wk_CSVHead_History on wk_CSVHead_History --声明一个tri_wk_CSVHead_History触发器, instead of insert ---插入操作被代替执行下面的操作 as begin declare YB cursor --声明一个游标 for select NoteNO from inserted--这里的NoteNO要和下面的匹配 open YB declare @NoteNO

SQL点滴18—SqlServer中的merge操作,相当地风骚

原文:SQL点滴18-SqlServer中的merge操作,相当地风骚 今天在一个存储过程中看见了merge这个关键字,第一个想法是,这个是配置管理中的概念吗,把相邻两次的更改合并到一起.后来在technet上搜索发现别有洞天,原来是另外一个sql关键字,t-sql的语法还是相当地丰富的.本篇是一篇学习笔记,没有什么新意,这里给出technet上的地址连接供大家参考权威:http://technet.microsoft.com/zh-cn/library/bb510625.aspx,这里具体的语

sqlserver中常见的操作

  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 create database Personnel_training_dbgouse Personnel_training_dbgo create table dept( deptid int primary key identity(1

教你几种在SQLServer中删除重复数据方法_MsSql

方法一 复制代码 代码如下: declare @max integer,@id integer declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) > 1 open cur_rows fetch cur_rows into @id,@max while @@fetch_status=0 begin select @max = @max -1 set rowcount

oracle-ORACLE 触发器中 使用游标查询 本表 报错ORA-04091

问题描述 ORACLE 触发器中 使用游标查询 本表 报错ORA-04091 racle 触发器. 监听表A 更新 更新后触发. 其中 使用游标查询表A 数据. OPEN 游标时 会报 ORA-04091:表A发生了变化,触发器/函数不能读它 于是增加了自定义事物 pragma autonomous_transaction; 增加事物之后不报错了.但是OPEN 的游标 没有获取到任何数据. 想做到的效果是 是这样. 比如说表A里面有4条数据 1 aaaa 2 bbbb 3 cccc 4 dddd

oracle中触发器与游标和包的联合问题。

问题描述 oracle中触发器与游标和包的联合问题. 1.创建临时表stu_temp.(临时表结构要和关联表结构一致) 2.创建一个包,包含两个存储过程,stu_insert用于在行级触发器中调用,往stu_temp临时表中装载更新或插入的记录.而stu_count用于在语句级触发器中检查人数是否超限. 3.创建行级触发器stu_in,目的是把更新后的记录插入stu_temp. 4.创建语句级触发器stu_cou,使用游标从stu_temp中逐条读取更新或插入的记录,取sno,在关联表stu中查

sqlserver中的自定义函数的方法小结_MsSql

"自定义函数"是我们平常的说法,而"用户定义的函数"是 SQL Server 中书面的说法. SQL Server 2000 允许用户创建自定义函数,自定义函数可以有返回值. 自定义函数分为:标量值函数或表值函数 如果 RETURNS 子句指定一种标量数据类型,则函数为标量值函数.可以使用多条 Transact-SQL 语句定义标量值函数. 如果 RETURNS 子句指定 TABLE,则函数为表值函数. 表值函数又可分为:内嵌表值函数(行内函数)或多语句函数 如果

SqlServer中tempdb的日志机制原理解析及示例分享_MsSql

测试用例 我们分别在用户数据库(testpage),tempdb中创建相似对象t1,#t1,并在tempdb中创建创建非临时表,然后执行相应的insert脚本(用以产生日志),并记录执行时间用以比较用以比较说明tempdb"快" Code 用户数据库testpage use testpage go create table t1 ( id int identity(1,1) not null, str1 char(8000) ) declare @t datetime2=sysutcd

sqlserver中操作主从关系表的sql语句

sqlserver中操作主从关系表的sql语句,重点讲解,科目信息传递过后怎么处理.假设从表Tb_StudentSubject 存在StudentId,SubjectId两个字段.那么代码如下: 复制代码 代码如下: Create proc SaveInfo ( ---参数列表不再逐一书写 @subjectList varchar(400)) as begin tran --新增或修改主表 省略 DECLARE @subjectID int, @subjectIDsLen int,--科目长度