【问题标题】:How to delete identity property from primary key column through sql query in sql server 2005 [duplicate]如何通过sql server 2005中的sql查询从主键列中删除标识属性[重复]
【发布时间】:2013-02-06 16:55:49
【问题描述】:

我有一个表,它不应该在多个数据库的主键列上设置 Identity 属性。可能有人无意中从设计视图中设置了它的属性。

因此,我想编写一个一次性查询,它将检测并从表中删除该身份规范。

我已阅读所有搜索文章,但对创建新表、复制其元数据/数据和重命名等解决方案不满意,因为该表非常关键,并且列对其有很多限制。

我也试过,设置Identity_insert 属性ON 但它只是一次。当服务器再次连接时,它不允许我保存。

SET IDENTITY_INSERT <tableName> ON;

我不想在插入数据之前通过设置IDENTITY_INSERT ON 来更改我的后端程序。

有什么建议吗?

【问题讨论】:

    标签: sql-server


    【解决方案1】:

    不幸的是,没有其他方法可以从表中删除 IDENTITY 属性,而无需先创建删除表并重新创建表。因此,您需要将数据存储在新表中,删除原始表,然后将临时表重命名为正确的名称。

    您可以在表中添加一个新列,然后将您的数据复制到这个新列中,从表中删除您的标识列,最后将您的新列设置为主键。

    如何找到您的 IDENTITY 列...

    select object_name(object_id) table_name,name column_name 
    from sys.columns
    where is_identity = 1
    

    【讨论】:

      猜你喜欢
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-18
      • 2018-06-28
      • 1970-01-01
      相关资源
      最近更新 更多