当前位置: 首页 > 面试题库 >

向现有列添加身份

公良信然
2023-03-14
问题内容

我需要将表的主键更改为标识列,并且表中已经有许多行。

我有一个脚本来清理ID,以确保它们从1开始是连续的,在我的测试数据库上可以正常工作。

将列更改为具有标识属性的SQL命令是什么?


问题答案:

您无法更改现有的标识列。

您有2种选择,

  1. 创建一个具有标识的新表并删除现有表

  2. 创建一个具有标识的新列并删除现有列

方法1.( 新表
)在这里,您可以将现有数据值保留在新创建的标识列上。请注意,如果不满足“如果不存在”的条件,您将丢失所有数据,因此请确保也将条件放在下拉列表上!

CREATE TABLE dbo.Tmp_Names
    (
      Id int NOT NULL
             IDENTITY(1, 1),
      Name varchar(50) NULL
    )
ON  [PRIMARY]
go

SET IDENTITY_INSERT dbo.Tmp_Names ON
go

IF EXISTS ( SELECT  *
            FROM    dbo.Names ) 
    INSERT  INTO dbo.Tmp_Names ( Id, Name )
            SELECT  Id,
                    Name
            FROM    dbo.Names TABLOCKX
go

SET IDENTITY_INSERT dbo.Tmp_Names OFF
go

DROP TABLE dbo.Names
go

Exec sp_rename 'Tmp_Names', 'Names'

方法2( 新列 )您可以在新创建的标识列上保留现有数据值,标识列将保存数字序列。

Alter Table Names
Add Id_new Int Identity(1, 1)
Go

Alter Table Names Drop Column ID
Go

Exec sp_rename 'Names.Id_new', 'ID', 'Column'

有关更多详细信息,请参见下面的Microsoft SQL Server论坛帖子:

如何将列更改为身份(1,1)



 类似资料:
  • 我有一个工作的Java项目,它使用Access.accdb数据库存储数据。我正在为我的程序进行更新,为用户提供更多的功能。为了使其工作,我需要在现有的表中添加一个列,该列填充了数据。当我研究时,我发现UCanAccess不能支持 这是不幸的,但我明白,由于低级别的驱动程序不支持它,UCanAccess也不能支持它。 然后我找到了这个解决办法: 如何使用UCanAccess修改表 但这对我也不起作用

  • 我最近想在现有的中添加一个列。为了独立地研究这个问题,我从示例13-6开始创建一个表并向其中添加数据。我向模型类添加了和访问器,并添加了一个新的,其中包含一个作为单元工厂。如图所示,我在每一行上都看到一个。尽管所有值都,但没有选中;这些复选框是活动的,但是从不调用。最近关于这个话题的问题表明我遗漏了一些东西;我欢迎任何见解。

  • 本文向大家介绍向Pandas中的现有DataFrame添加新列,包括了向Pandas中的现有DataFrame添加新列的使用技巧和注意事项,需要的朋友参考一下 Pandas 数据框是一种二维数据结构,即,数据以表格的形式在行和列中对齐。可以使用python dict,list和series等创建它。在本文中,我们将看到如何在现有数据框中添加新列。因此,首先让我们使用pandas系列创建一个数据框。

  • 问题内容: 我有以下索引的DataFrame,其中的命名列和行不是连续数字: 我想在现有数据框架中添加新列,并且不想更改数据框架中的任何内容(即,新列的长度始终与DataFrame相同)。 我尝试了不同的版本,但我没有得到我想要的,最多只是错误的结果。如何e在上面的示例中添加列? 问题答案: 使用原始的df1索引创建系列: 编辑2015年 有些人报告使用此代码。 但是,该代码仍可以在当前的熊猫0.

  • 问题内容: 我不知道如何使用Laravel框架向现有数据库表添加新列。 我试图使用…来编辑迁移文件。 在终端中,我执行和。 如何添加新列? 问题答案: 要创建迁移,您可以在Artisan CLI上使用migration:make命令。使用特定名称以避免与现有模型冲突 对于Laravel 3: 对于Laravel 5+: 然后,您需要使用该方法(在访问现有表而不是创建新表时)。您可以添加如下所示的列

  • 我不知道如何使用Laravel框架将新列添加到现有的数据库表中。 我试图使用…编辑迁移文件。。。 在终端,我执行和。 如何添加新列?