將表中的某個字段轉換成標識字段,並保留原來的值

2022-03-04 08:43:15 字數 1420 閱讀 6774

/*--將表中的某個字段轉換成標識字段,並保留原來的值 

注意,因為要刪除原表,所以,如果表和其他表的關聯,這些關聯要重新建立

--鄒建 2003.12--*/

/*--呼叫示例

exec p_setid '表名','要轉換的欄位名'

--*/

alter proc p_setid

@tbname sysname, --要處理的表名

@fdname sysname --要轉換為標識欄位的欄位名

as declare @s1 varchar(8000),@s2 varchar(8000),@tmptb sysname

select @s1='',@s2='',@tmptb='[tmp_'+@tbname+'_bak]'

select @s1=@s1+',['+name+']'

+case name when @fdname then '=identity(bigint,1,1)' else '' end

,@s2=@s2+',['+name+']'

from syscolumns where object_id(@tbname)=id

select @s1=substring(@s1,2,8000),@s2=substring(@s2,2,8000)

exec('select top 0 '+@s1+' into '+@tmptb+' from ['+@tbname+']

set identity_insert '+@tmptb+' on

insert into '+@tmptb+'('+@s2+') select '+@s2+' from ['+@tbname+']

set identity_insert '+@tmptb+' off

') exec('drop table ['+@tbname+']')

exec sp_rename @tmptb,@tbname

go --使用測試

--建立測試的表

create table 表(編號 bigint,姓名 varchar(10))

insert into 表

select 1,'張三'

union all select 2,'李四'

union all select 4,'王五'

go --呼叫儲存過程,將編號字段改為標識字段

exec p_setid '表','編號'

go --顯示處理結果

select * from 表

--顯示是否修改成功

select name from syscolumns

where object_id('表')=id and status=0x80

go --刪除測試

drop table 表

treeview 讀取SQL表中某個字段

var index integer strfzyw string treenode ttreenode begin strfzyw main fm.rzstatuspane2.caption if rzpagecontrol1.activepage tabsheet2 then begin with...

mysql 替換某個欄位中的某個字元

遇到這麼個情況 比如 msql裡面的某個表的某個字段裡面儲存的是乙個人的位址,有一天這個位址的裡面的某個地 名變了,那麼他的位址也就要變 比如 原來是 csharp view plain copy number addr 01 四川省成都市 街道05號 02 四川省成都市 街道07號 03 四川省成...

mysql替換某個欄位中的某個字元

比如 msql裡面的某個表的某個字段裡面儲存的是乙個人的位址,有一天這個位址的裡面的某個地 名變了,那麼他的位址也就要變 比如 原來是 number addr 01 中國浙江 02 中國浙江 03 中國浙江 現在位址改了 浙江 搬到了 上海 所以,addr欄位裡面的所有的值,都要把 浙江 改為 上海...