|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。转换
/*--将表中的某个字段转换成标识字段,并保存本来的值
注重,由于要删除原表,以是,假如表和其他表的联系关系,这些联系关系要从头创立
--邹建2003.12--*/
/*--挪用示例
execp_setid表名,要转换的字段名
--*/
ifexists(select*fromdbo.sysobjectswhereid=object_id(N[dbo].[p_setid])andOBJECTPROPERTY(id,NIsProcedure)=1)
dropprocedure[dbo].[p_setid]
GO
CREATEPROCP_SETID
@tbnamesysname,--要处置的表名
@fdnamesysname--要转换为标识字段的字段名
as
declare@s1varchar(8000),@s2varchar(8000),@tmptbsysname
select@s1=,@s2=,@tmptb=[tmp_+@tbname+_bak]
select@s1=@s1+,[+name+]
+casenamewhen@fdnamethen=identity(bigint,1,1)elseend
,@s2=@s2+,[+name+]
fromsyscolumnswhereobject_id(@tbname)=id
select@s1=substring(@s1,2,8000),@s2=substring(@s2,2,8000)
exec(selecttop0+@s1+into+@tmptb+from[+@tbname+]
setidentity_insert+@tmptb+on
insertinto+@tmptb+(+@s2+)select+@s2+from[+@tbname+]
setidentity_insert+@tmptb+off
)
exec(droptable[+@tbname+])
execsp_rename@tmptb,@tbname
go
/*==========================================================*/
--利用测试
--创立测试的表
createtable表(编号bigint,姓名varchar(10))
insertinto表
select1,张三
unionallselect2,李四
unionallselect4,王五
go
--挪用存储历程,将编号字段改成标识字段
execp_setid表,编号
go
--显现处置了局
select*from表
--显现是不是修正乐成
selectnamefromsyscolumns
whereobject_id(表)=idandstatus=0x80
go
--删除测试
droptable表
MySQL最初的开发者的意图是用mSQL和他们自己的快速低级例程(ISAM)去连接表格。经过一些测试后,开发者得出结论:mSQL并没有他们需要的那么快和灵活。 |
|