我该如何在SQL Server
数据库表中实现自动递增
的主键
?我在论坛上查看过,但没有找到如何做到这一点。
我查看了属性,但没有看到选项。我看到一个答案是要前往Identity
规范属性,并将其设置为yes
,并将Identity increment
设置为1,但该部分被禁用,我无法将no更改为yes。
肯定有一种简单的方法来实现这一点,但我找不到它。
我该如何在SQL Server
数据库表中实现自动递增
的主键
?我在论坛上查看过,但没有找到如何做到这一点。
我查看了属性,但没有看到选项。我看到一个答案是要前往Identity
规范属性,并将其设置为yes
,并将Identity increment
设置为1,但该部分被禁用,我无法将no更改为yes。
肯定有一种简单的方法来实现这一点,但我找不到它。
-- 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
不是表中唯一的列。IDENTITY
属性可以应用于任何数值数据类型(比如 tinyint
, smallint
, int
, bigint
, numeric
, decimal
),唯一的限制是它不能表示小数(因此不能是 float
或 real
,以及 numeric
或 decimal
带有非零精度),当然,标识规格应与所选数据类型兼容。 - PredIDENTITY
列:CREATE TABLE (
ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
...
);
IDENTITY
属性将自动递增列的值,从1开始。(请注意,列的数据类型必须为整数。)如果您想将此属性添加到现有列中,请使用 ALTER TABLE
命令。ALTER TABLE
命令。您需要扩展“身份”部分以公开增量和种子。
编辑:我假设您有一个整数数据类型,而不是char(10)。 我认为这是合理的,并且在我回答时是有效的。
拓展你的数据库,扩展你的表格,右键点击表格并从下拉菜单中选择设计。
现在进入列属性,在下面滚动并找到标识规范,展开它,你将找到是否为标识,将其设置为“是”。现在选择标识增量,在它的下面给出你想要递增的值。
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”列指定值(唯一值将自动添加):
也许我还有所遗漏,但是为什么这个方法不能用在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
在插入命令中引用该序列时,只需使用:
NEXT VALUE FOR blah.blahsequence
了解更多信息和选项,请参阅SEQUENCE
IDENTITY
有时会跳过并留下间隙,然后再回来填补这些间隙。因此,IDENTITY
不能保证始终满足增量条件。 - FindOut_Quran当你使用数据类型:int时,你可以选择想要自动增加的行并进入列属性标签。在那里,你可以将identity设置为“是”。自动增量的起始值也可以在那里编辑。希望我能帮到你;)
在创建表时,您可以将关键字IDENTITY
作为数据类型与PRIMARY KEY
约束一起用于列。
例如:
StudentNumber IDENTITY(1,1) PRIMARY KEY
这里的第一个'1'表示起始值,第二个'1'是增加值。
ALTER TABLE ... SWITCH
仅是元数据更改,不移动任何数据。 - Martin Smith