|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
对于update操作,event中依次记录旧行,新行的值。server|sqlserver|数据SELECT
表名=casewhena.colorder=1thend.nameelseend,
表申明=casewhena.colorder=1thenisnull(f.value,)elseend,
字段序号=a.colorder,
字段名=a.name,
标识=casewhenCOLUMNPROPERTY(a.id,a.name,IsIdentity)=1then√elseend,
主键=casewhenexists(SELECT1FROMsysobjectswherextype=PKandnamein(
SELECTnameFROMsysindexesWHEREindidin(
SELECTindidFROMsysindexkeysWHEREid=a.idANDcolid=a.colid
)))then√elseend,
范例=b.name,
占用字节数=a.length,
长度=COLUMNPROPERTY(a.id,a.name,PRECISION),
小数位数=isnull(COLUMNPROPERTY(a.id,a.name,Scale),0),
同意空=casewhena.isnullable=1then√elseend,
默许值=isnull(e.text,),
字段申明=isnull(g.[value],)
FROMsyscolumnsa
leftjoinsystypesbona.xtype=b.xusertype
innerjoinsysobjectsdona.id=d.idandd.xtype=Uandd.namedtproperties
leftjoinsyscommentseona.cdefault=e.id
leftjoinsyspropertiesgona.id=g.idanda.colid=g.smallid
leftjoinsyspropertiesfond.id=f.idandf.smallid=0
--whered.name=要查询的表--假如只查询指定表,加上此前提
orderbya.id,a.colorder恢复到之前的某个状态,是需要数据的。这数据可以是a)回滚步骤或者b)操作之前的数据状态原文。 |
|