`
happmaoo
  • 浏览: 4340718 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

将表中的某个字段转换成标识字段,并保留原来的值

阅读更多
<iframe align="center" marginwidth="0" marginheight="0" src="http://www.zealware.com/csdnblog336280.html" frameborder="0" width="336" scrolling="no" height="280"></iframe>

/*--将表中的某个字段转换成标识字段,并保留原来的值

注意,因为要删除原表,所以,如果表和其他表的关联,这些关联要重新创建

--邹建 2003.12(引用请保留此信息)--*/

/*--调用示例

exec p_setid '表名','要转换的字段名'
--*/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_setid]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_setid]
GO

CREATE 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 表




分享到:
评论

相关推荐

    PowerDesigner数据库模型表内容大小写转换

    PowerDesigner数据库模型表内容大小写转换,可对表名称、字段名称、字段类型标识字符、主外键依赖等字符串进行大小写转换操作

    arcgis工具

    如果搜索不需要区分大小写,可以使用SQL函数将所有的值都转换成大写或者小写。对于基于文件的数据源,例如shape文件或coverages,既可以使用UPPER函数,也可以使用LOWER函数。 例如下面这个查询将选出那些姓名的...

    数据库资料

    R图转换为表 3-2 如何将E-R图转换为表数据规范化 仅有好的RDBMS并不足以避免数据冗余,必须在数据库的设计中创建好的表结构 Dr E.F.codd 最初定义了规范化的三个级别,范式是具有最小冗余的表结构。这些范式是:第一...

    Excel新增工具集

    例如,当前工作表或当前工作簿中的若干工作表中A列有张三、李四、王五、李四,有相同列字段“送货”,则本命令把A列中的两个李四行合并成一行,同时将每个人在所有表中列字段为“送货”的数量相加。 6、比较两表...

    根据word模板导出word、PDF文档

    本功能是将各个模板的数据均查询并导出为word后,将word转换成PDF格式,并将word合并成一个整体word,对整体word进行转换成PDF 本资源中集成了 根据word模板导出word功能 、合并多个word功能 、word转换成pdf功能 、...

    怎样设计良好的数据库.pdf

    3、将E-R图转换成表格 类似于这样 4、利⽤三⼤范式对表进⾏缓解数据冗余和数据表的合理性 由于不是专门研究数据库的,所以对于三⼤范式并不是理解的很透彻。 数据库命名 接下来说⼀下数据库的命名,我习惯于⽤⼩写...

    ArcGIS工具箱,辅助建库

    该工具可实现: 1.单图层工具:1)单图层进行字段序列编号,序列编号前补零(比如标识码...重点来了,转换受限于当前使用的ArcGIS的版本,比如我的电脑中使用的是10.7版本的,那最高支持10.7版本的文件转换为低版本。

    U8升级问题汇总

    和演示账套对比该表的属性发现:主键ID_Flt为标识字段,演示账套标识值为“是”,而客户的数据中的值为“是(不适用于复制)”。故试着将值改为“是”。由于表rpt_glbdef,rpt_flddef与该表关系密切且标识值也为“是...

    进程优先度算法

     进程被阻塞的时间BLOCKTIME,表示已经阻塞的进程再等待BLOCKTIME个时间片后,将转换成就绪状态。  进程状态STATE。  队列指针NEXT,用来将PCB排成队列。  优先数改变的原则(采用简单轮转法时该字段无用)...

    SQL语法大全

    sql="update 数据表 set 字段1=值1,字段2=值2 …… 字段n=值n where 条件表达式" (3) 删除数据记录: sql="delete from 数据表 where 条件表达式" sql="delete from 数据表" (将数据表所有记录删除) (4) 添加...

    Oracle9i的init.ora参数中文说明

    说明: (如果值为 TRUE) 当在隐式转换中丢失数据时返回错误的参数。 值范围: FALSE | TRUE 默认值: TRUE nls_numeric_characters: 说明: 指定将用作组分隔符和小数位的字符。组分隔符就是用来分隔整数位组 (如千, ...

    数据库设计中英文术语表.doc

    Bottom-up approach(自底向上方法):用于数据库设计,一种设计方法学,他从标识每个设 计组建开始,然后将这些组件聚合成一个大的单元。在数据库设计中,可以从表示 属性开始底层设计,然后将这些属性组合在一起...

    Navicat 15用户中文指南.pdf

    过百种增强的功能和耳目一新的界面,让你以崭新的方式创建、管理和维护数据库,新的数据可视化工具使你可以将数据转换为有效的图像,以标识趋势、模式和离群值。简化数据分析并将你的工作区共享给同事,以更好地支持...

    经典SQL脚本大全

    卷序列号码为 00000030 4489:1826 C:. │ sqlserver2000.txt │ ├─第01章 │ 1.9.1 设置内存选项.sql ...│ 将某个目录上的Excel表,导入到数据库中.sql │ 数据导入导出基本方法.sql │ 用ASP上传&下载文件.sql

    数据库设计:逻辑结构设计.pdf

    5.3 逻辑结构设计 逻辑结构设计的任务就是把概念模型转换为某个具体的数据库管理系统所 支持的数据模型。 具体来讲就是从 E-R 模型到关系模型的转换。 (1)根据 E-R 模型设计关系模式; (2)选择适当的范式对所...

    数据库系统原理——数据描述.pdf

    在数据库系统中,逻辑数据和物理数据之间可以差别很⼤,数据管理软件的功能之⼀就是要把逻辑数据转换成物理数据,或者物理数据转换 成为逻辑数据。 1. 物理设计中的数据描述 物理存储介质层次依次是:⾼速缓冲...

    SQL性能优化

     ORACLE试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用IN的SQL至少多了一个转换的过程。一般的SQL都可以转换...

    Palo Alto防火墙生产环境logstash配置文件 PANOS 10.2.8 测试通过 - 2024最新版

    这个配置文件用于通过 logstash 解析Palo Alto Networks(PAN-OS)防火墙产生的Syslog日志,并将其转换为结构化的数据格式以便于后续处理和分析。 这个配置文件提供了以下功能: 1. 解析Palo Alto Networks(PAN-...

Global site tag (gtag.js) - Google Analytics