我如何在一个SQL Server数据库表auto increment的primary key ?我已经通过论坛看了一下,但不知道如何做到这一点。
SQL Server
auto increment
primary key
我看了房子的属性,但找不到选项。我看到了一个答案,你去Identity规范属性,并将其设置为yes,并将Identity increment设置为1,但该部分是灰色的,我不能将没有更改为是的。
Identity
Identity increment
一定有一个简单的方法来做到这一点,但我找不到。
您必须展开Identity部分以公开增量和种子。
编辑:我假设您的数据类型是整数,而不是char(10)。当我发布这个答案时,我想说哪个是合理的和有效的
确保Key列的数据类型是int,然后手动设置标识,如图所示
int
或# EYZ0
-- ID is the name of the [to be] identity column ALTER TABLE [yourTable] DROP COLUMN ID ALTER TABLE [yourTable] ADD ID INT IDENTITY(1,1)
如果ID不是表中唯一的列,代码将运行
ID
图像引用先进先出
当你创建表时,你可以创建一个IDENTITY列,如下所示:
IDENTITY
CREATE TABLE ( ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY, ... );
IDENTITY属性将自动从第1列开始递增。(请注意,列的数据类型必须是整数。)如果要将其添加到现有列中,请使用ALTER TABLE命令。
ALTER TABLE
当你使用Data Type: int时,你可以选择你想要自动递增的行,然后转到列属性标签。在这里,您可以将身份设置为“yes”。自动递增的起始值也可以在那里编辑。希望我能帮上忙;)
展开你的数据库,展开你的表右键单击你的表,从下拉菜单中选择设计。
现在去列属性下面的它向下滚动,找到标识规范,展开它,你会发现是身份使它是。现在选择身份增量在它的正下方给出你想要增加的值。
也许我遗漏了一些东西,但为什么这对SEQUENCE对象不起作用?这不是你想要的吗?
例子:
CREATE SCHEMA blah. GO CREATE SEQUENCE blah.blahsequence START WITH 1 INCREMENT BY 1 NO CYCLE; CREATE TABLE blah.de_blah_blah (numbers bigint PRIMARY KEY NOT NULL ......etc
当在INSERT命令中引用序列时,只需使用:
NEXT VALUE FOR blah.blahsequence
序列的更多信息和选项
如果表已经填充,则不可能将列更改为IDENTITY列或将其转换为非IDENTITY列。您将需要导出所有数据,然后您可以将列类型更改为IDENTITY,反之亦然,然后将数据导入回来。 我知道这是一个痛苦的过程,但我相信除了使用这篇文章中提到的序列之外没有其他选择
注意ID元素是否相邻。由于SQLSERVER ID可以跳跃1000。
示例:重启前ID=11 重新启动后,在表中插入新行,则id将为1012
我有这个问题,我已经创建表,不能改变它而不掉表,所以我所做的是: (不确定他们什么时候实现的,但在SQL 2016中有)
右键单击对象资源管理器中的表:
# EYZ0
然后对Josien说的剧本进行编辑;滚动到CREATE TABLE所在的底部,找到你的主键,并在逗号前添加IDENTITY(1,1)。运行脚本。
CREATE TABLE
IDENTITY(1,1)
DROP和CREATE脚本对我也很有帮助,因为这个问题。(生成的脚本处理)。
PRIMARY KEY
StudentNumber IDENTITY(1,1) PRIMARY KEY
这里的第一个‘1’表示起始值,第二个‘1’表示递增值。
CREATE TABLE Persons ( Personid int IDENTITY(1,1) PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Age int );
MS SQL Server使用IDENTITY关键字执行自动增量特性。
在上面的例子中,IDENTITY的起始值是1,每增加一条新记录,它都会加1。
提示:要指定“Personid”列应该从值10开始,并增加5,请将其更改为IDENTITY(10,5)。
要向"Persons"表中插入一条新记录,我们不需要为"Personid"列指定一个值(一个唯一的值会自动添加):