触发器 行触发 游标 字符长度 inserted和deleted一致 保存 1000分
描述: 获取数据更改变化并记录
方案: 通过触发器分别获取INSERT,UPDATE,DELETE的操作数据,记录到表或文件
问题: 1:SQLSERVER触发器不能像ORACLE那样行触发,如果能达到行触发就勿须用到游标,有没有方案做到行触发?BTW:应用系统不得更改;
2:查阅较多资料均告之"不推荐在触发器中使用游标",请问如果在触发器中使用游标会有哪些后果?有没有致命后果?
3:若不用游标有什么好的办法从inserted,deleted读取数据?
4:在update触发器中inserted和deleted中的数据是不是一定匹配为第一行对应第一行...?
5:存放数据记录的表如何设计?(关键是保存数据的字段是什么类型?)
6:SQLSERVER的数据类型在保存到文件再次更新时有哪些限制,如text,ntext,image字段能不能取出文本保存并以UPDATE的方法来更新?如果不可以有没有解决方案?
目前我采用的办法是:
declare @content varchar(8000)--最大值极有可能不够用
set @content = ''
select @content = @content + cast(field1 as varchar),
@content = @content + cast(field2 as varchar),
@content = @content + cast(field3 as varchar)
from inserted--deleted
这样做如果在一行且所有行的数据字符不超过8000时有效.能不能实现类似ORACLE的LONG类型可用于局部变量的做法?text,ntext,image均不能用于局部类型
在ORACLE里我用LONG类型来保存更新的数据,基本上实现没有太大的问题,在SQLSERVER中如何实现?
如果在记录表中使用text类型,那么在trigger中如何保存及操作?
不知道哪位高人有更好的解决方案还请不啬指教!!!
愿意付出1000分.
联系方式 QQ:670340 MSN:lifeforu51[at]hotmail[dot]com