SQL:将新的主键列添加到数据库表

时间:2018-10-18 12:15:04

标签: mysql sql sql-server oracle

我有一个包含几列的数据库表,其中一些用于一起构成主键。现在,模型已更改,并且引入了一个称为“ id”的主键列。

当我更改表并添加列时,该列将在每一行中填充默认值0或NULL,因此它不能用作新主键的候选项。为此,我必须在每一行中为“ id”使用不同的(数字)值。我该如何做到这一点,最好是尽可能通用(MySQL,Oracle,SQL Server)。

2 个答案:

答案 0 :(得分:1)

这里是如何添加作为主键填充的标识列的示例。

create table #t (vals varchar(100))

insert into #t
values('a'),('b'),('c')

alter table #t
add ID int identity primary key

select * from #t

结果:

vals    ID
a   1
b   2
c   3

这是SQL Server的答案。我不知道其他数据库如何工作。

答案 1 :(得分:0)

IDENTITY

可能会有所帮助。 MS SQL Server使用IDENTITY关键字来执行自动递增功能。

在上面的示例中,IDENTITY(10,5)的起始值为1,对于每个新记录,该值将增加1。

提示:要指定“ ID”列应从值10开始并以5递增,将其更改为 [When(@"I can see buttons:")] [Then(@"I can see buttons:")] public void ICanSeeButtons(Table table) { foreach (var row in table.Rows) { var buttonValue = row["buttons"]; var field = this.Page.ButtonByText.With(buttonValue); field.Assert.Is.Displayed(); } }

要将新记录插入“人”表中,我们将不必为“ ID”列指定值(将自动添加唯一值):