我有一个包含几列的数据库表,其中一些用于一起构成主键。现在,模型已更改,并且引入了一个称为“ id”的主键列。
当我更改表并添加列时,该列将在每一行中填充默认值0或NULL,因此它不能用作新主键的候选项。为此,我必须在每一行中为“ id”使用不同的(数字)值。我该如何做到这一点,最好是尽可能通用(MySQL,Oracle,SQL Server)。
答案 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”列指定值(将自动添加唯一值):