sql server中为现有的列添加或去掉标识属性--

sql server中为现有的列添加或去掉标识属性--

ID:22377494

大小:62.50 KB

页数:7页

时间:2018-10-28

sql server中为现有的列添加或去掉标识属性--_第1页
sql server中为现有的列添加或去掉标识属性--_第2页
sql server中为现有的列添加或去掉标识属性--_第3页
sql server中为现有的列添加或去掉标识属性--_第4页
sql server中为现有的列添加或去掉标识属性--_第5页
资源描述:

《sql server中为现有的列添加或去掉标识属性--》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、SQLServer中为现有的列添加或去掉标识属性>>  问题:  SQLServer有一个不错的常用特性,就是标识列。利用这个特性,你可以轻松地在表里为每一行创建唯一的值。添加一个新的列并设置为标识列,或者删除现有标识列都很简单,但是如果是要把一个现有的列改为标识列,或者去掉现有的标识列的标识属性,那应该怎么做呢?  专家解答:  要做到这一步并不容易,或者说没有什么简单易行的方法。SQLServer的设计里并没有很简单的就现有的列加上或去掉标识属性的方法。最安全的办法是,创建一个新的列并设置为标识列,或者创建一个新的表,然后把数据移植进去。  我们来看看

2、一些例子:  例一  现有一个简单的表,表里含有两列,其中一列为标识列。CREATETABLE[dbo].[Test1]( [id][int]IDENTITY(1,1)NOTNULL, [name][nchar](10)NULL)  如果我们用SQLServerManagementStudio来去掉id列的标识值,这样就会创建出一个新的临时表,原表的数据都移到了临时表中,然后删除原表并为新表重命名。我们可以从下面的脚本里看到这个过程。  要看到这个脚本,只要使用ManagementStudio来进行改动,然后右击designer,选择GenerateCha

3、ngeScript。以下是引用片段:/*Topreventanypotentialdatalossissues,youshouldreviep_Test1 ( idINTNOTNULL, nameNCHAR(10)NULL ) ON[PRIMARY]GOIFEXISTS(SELECT*FROMdbo.Test1)  EXEC('INSERTINTOdbo.Tmp_Test1(id,name)   SELECTid,nameFROMdbo.Test1IT  例二  我们现在来把它弄得更复杂一点,在表里设置主键,然后创建以外键约束的另一个表,以第一个表

4、主键为索引。我们可以看到这样做需要花更多工夫。以下是引用片段:CREATETABLE[dbo].[Test1]( [id][int]IDENTITY(1,1)NOTNULL, [name][nchar](10)NULL,CONSTRAINT[PK_Test1]PRIMARYKEYCLUSTERED ( [id]ASC))GO  CREATETABLE[dbo].[Test2]( [id][int]NULL, [name2][nchar](10)NULL)ON[PRIMARY]GO  ALTERTABLE[dbo].[Test2]anagementStudi

5、o去掉表test1中id列的标识值,可以从脚本里看到,这样需要更多的步骤才能达到我们的目的。  首先创建一个列属性正确的临时表Tmp_Test1  把数据从表Test1移植到临时表Tmp_Test1中  去掉Test2的外键约束  删除表Test1  临时表Tmp_Test1重命名为Test1  在表Test1里创建主键  最后重新在表Test2里创建外键约束。步骤太多了!以下是引用片段:/*Topreventanypotentialdatalossissues,youshouldreviewthisscriptindetailbeforerunningi

6、toutsidethecontextofthedataba12下一页>>>>这篇文章来自..,。sedesigner.*/BEGINTRANSACTIONSETQUOTED_IDENTIFIERONSETARITHABORTONSETNUMERIC_ROUNDABORTOFFSETCONCAT_NULL_YIELDS_NULLONSETANSI_NULLSONSETANSI_PADDINGONSETANSI_ITBEGINTRANSACTIONGOCREATETABLEdbo.Tmp_Test1 ( idINTNOTNULL, nameNCHAR(10)N

7、ULL ) ON[PRIMARY]GOIFEXISTS(SELECT*FROMdbo.Test1)  EXEC('INSERTINTOdbo.Tmp_Test1(id,name)   SELECTid,nameFROMdbo.Test1ARYKEYCLUSTERED  ( id )ARY]  GOMITBEGINTRANSACTIONGOALTERTABLEdbo.Test2ADDCONSTRAINT FK_Test2_Test1FOREIGNKEY ( id )REFERENCESdbo.Test1 ( id )ONUPDATE NOACTION

8、   ONDELETE NOACTION   GOMIT  同样,

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。