2010-09-21 26 views
1

我有SQL Server 2008中的表。它有empId,它是类型的int。现在不是身份。我想编写查询(以便我可以维护数据库中的更改记录)将此列作为标识列。该表目前没有数据。SQL查询表上的身份密钥

回答

3

它可以做到但不容易。据this article,如果你通过SSMS做到这一点,然后生成一个脚本,基本上是:

  1. 作为 例1中创建类似的表结构,说Tmp_Example1与 标识列。
  2. 集IDENTITY_INSERT ON的新表 只是created.Step 3:从插入到示例1所有Tmp_Example1值
  3. SET IDENTITY_INSERT OFF上 Tmp_Example ..
  4. 跌落例1(这是怎么回事... 下探我们原来的表???)
  5. 将Tmp_Example1重命名为Example1。 提交事务

如果这个表不具有任何数据就像你说的,那么你可能会更好过只是这样通过SSMS(我的文章链接中提供的步骤)。你有没有理由使用SQL来做这件事?

UPDATE

我读an article其他用户发布的时间较早,发现这里面似乎比我上面的方法要容易得多:

ALTER TABLE SOURCE_TB ADD ID_II INT IDENTITY(1,1) 
ALTER TABLE SOURCE_TB DROP COLUMN ID 
EXEC sp_rename 'SOURCE_TB.ID_II' ,'ID','COLUMN' 

但同样,这可能更有意义做这通过SSMS。不过很高兴知道...

+0

+1好一个............... – 2010-09-21 05:53:19

+0

@Pranay,我正在阅读你之前发布的文章,他们有我在我的更新中发布的代码,似乎工作。我认为你的解决方案中有不同于此的东西? – 2010-09-21 05:55:15

+0

我同意这一点,但一些我想更新现有的列。我知道这样做不会有什么影响,但是。想要纯粹的改变表格,并且想要设置标识。这是错误的 - 然后重新创建。 sql服务器必须有这样的设施才能将列属性更改为标识。 – 2010-09-21 06:02:27

1

您没有数据,因此将表格编写为drop并重新创建。将该字段更改为Employeeid int identity(1,1)不为null。然后重新创建表格。没有大惊小怪。