|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
线上或者测试环境经常出现的误操作总是让DBA同学那么闹心。
函倒δ埽焊砻玫奖淼牧忻皖型
我在sql程序r,几都玫揭恍┫到y冉ǖ暮,如right(),datalength()等,可是,我在工程_lr,假如但愿能F一些切合特别的请求的淼脑,就必要自已函,以下面的例子是一失掉表的Y的函
函档姆诸:
1.量函担捍祟函惦bЩ我坏
2.骰暮担骰匾Table型e的,分橐韵深:
2.1行担汉档热菔且SelectZ句
2.2多⑹龊:函档热菔怯啥SelectZ句M成
本例是用一多⑹龊,它的格局:
createfunctionfunction_name
([@parameter_name]:魅)
returns@return_variabletable(前往表的有P信息)
as
begin
function_body
return
end
例代a:
createfunctiontablestructure
(@objnamenvarchar(111))----此橐樵的表的名Q
----------------------------------------------
--fieldname楸淼牧械拿Q,type是列的型,length榱械拈L度,null暗示是不是允S榭
returns@tabletable(fieldnamevarchar(50),
typevarchar(16),
lengthint,
nullablevarchar(3))
----------------------------------------------
begin
declare@objidint
---1.先表sysobjects中失掉c魅氲谋砻(name)相婚配的ο笞Rea(id)
--sysobjects是包括在中创建的每ο(l件s束、AO值、n、t、存^程等等)的一有
select@objid=idfromsysobjectswhereid=object_id(@objname)
--syscolumns是包括每Y料表及D中的每Y料行的一
---2.再表syscolumns中获得c目吮碜Rea(id)符合、且不是程序目标的
(列名、型、L度、列是不是允S榭)的
insert@table
select
fieldname=name,
type=type_name(xusertype),
length=convert(int,length),
nullable=casewhenisnullable=0thennoelseyesend
fromsyscolumnswhereid=@objidandnumber=0orderbycolid
return
end
liaodaibo
我们只需要把binlog文件反向执行,每个操作都执行逆操作即可。当然也不是所有的event都反转。Table_mapevent必须还是在Rows_log_event每个操作之前。 |
|