MSSQL触发器基础(在触发器遍历所有数据)
2012-02-28 12:23 xtsjh0001 阅读(1153) 评论(0) 编辑 收藏 举报
最近很懒,也有忙的原因~~一些东西懒得发上来了·~~还是要写上来才可以,不然学到的东西以后我就忘记了 create table ritem( id int IDENTITY(1,1) ); 触发器的基本写法
create table ritem( id int IDENTITY(1,1) ); 触发器的基本写法 create trigger 触发器名 on 数据表名 for (insert|update|delete) as begin 在这里写代码 end 定义变量,并赋值 create trigger t_insert_ritem on ritem for insert as begin declare @id int select @id=id from inserted -- 从插入的数据获得ID的值,还有一个deleted -- inserted表示新的数据,deleted表示旧的数据(自己理解的,不知道对不对?) set @id = @id - 1 -- 另一种赋值 PRINT @id -- 可以把值打印出来,在查询分析器结果可以看到 raiserror('抛出错误 id的值为:%d',16,1,@id) -- 也可以这样输出 if (@id<0) begin rollback transaction -- 回滚事务 end if exists(select * from ritem where id=@id) begin -- 还可以用exists来判断是否为空 end end CREATE TRIGGER TRIGGER_Update ON ritem FOR UPDATE AS if Update(UserName) begin -- 判断UserName有没有更新 end
当你更新一个数据想要把相关联的所有数据都更新的时候就要用游标(CURSOR)鸟~~MSSQL的遍历 declare @id int, @rid int declare cur_tmp CURSOR FOR select id,rid from ritem OPEN cur_tmp FETCH NEXT FROM cur_tmp INTO @id,@rid -- 这里是取到select的值 WHILE @@FETCH_STATUS = 0 BEGIN -- 在这中间加入循环 FETCH NEXT FROM cur_tmp INTO @id,@rid END CLOSE cur_tmp DEALLOCATE cur_tmp -- 释放游标 |