这里说的触发器和游标的使用在sqlserver2000和sqlserver2005中测试通过,鄙人认为触发器也算是一种存储过程,触发器是在数据库中自动触发,而存储过程需要的程序中调用,语法和用法上来说应该是大同小异的,对sql的功底不深,请恕在下在此妄加猜测,直接看代码和注释。

CREATE TRIGGER whenUpdate---触发器的名称
  ON tableName--为表“tableName”创建触发器
  FOR UPDATE--为什么事件触发,这里当然就可以是增删改等操作了
  AS        
	begin ----------下边开始触发器要干的事情
		Declare @cbid float-------声明的变量
		Declare @cask float-------声明的变量
		Declare @ctype varchar(20)--声明的变量
		---下边三行代码代表了为三个变量赋值,
		---这里要理解触发器里面的两个临时的表:Deleted , Inserted 。
		---Deleted 与Inserted分别代表
		---“tableName”表中“旧的一条记录” 和“新的一条记录”。	
		SET @ctype = (SELECT currencytype FROM Inserted)
		SET @cbid = (SELECT fex_bid FROM Inserted)
		SET @cask = (SELECT fex_ask FROM Inserted)
 
		Declare @sid numeric----------声明的变量
		Declare @coinType varchar(255)----------声明的变量
		--声明游标,cur为游标的名称
		Declare cur Cursor FOR 
			----这里就是查询一个表中的数据,然后将结果集给游标
			SELECT id AS id,coinType AS coinType
					FROM shoutorder 
					WHERE 1=1
			Open cur--打开游标,开始循环
			--首先需要手动开始循环游标,
			--并将上边查询结果集中的两个值分别赋给@sid和@coinType,
			--主要这里的赋值是按查询字段的顺序赋值
			Fetch next FROM cur INTO @sid,@coinType
			--------------循环体begin---------------
			While @@fetch_status=0 
				Begin 
					---这里可有一些想要的操作判断等
					---if和else的写法
					IF (@sid = 3 AND @coinType = 0)
						begin 
							UPDATE......--这里省略很多操作
						end 
					else IF()
						begin 
 
						end
					--下标下移
					Fetch Next FROM cur INTO @sid,@coinType
				End 
			--------------循环体end-----------------	
		Close cur --关闭游标
		--由于游标的机制是将数据全部加载到内存中然后才操作,
		--这里请务必释放游标
		Deallocate cur
	end