我如何auto increment
在primary key
一个SQL Server
数据库表,我已经通过论坛看看,但不能看到。
我看过属性,但是看不到选项,我看到了一个答案,您可以转到Identity
specification属性并将其设置为yes,然后将其设置Identity increment
为1,但是该部分显示为灰色,我无法更改不,是的。
必须有一种简单的方法来执行此操作,但我找不到它。
我如何auto increment
在primary key
一个SQL Server
数据库表,我已经通过论坛看看,但不能看到。
我看过属性,但是看不到选项,我看到了一个答案,您可以转到Identity
specification属性并将其设置为yes,然后将其设置Identity increment
为1,但是该部分显示为灰色,我无法更改不,是的。
必须有一种简单的方法来执行此操作,但我找不到它。
Answers:
确保“密钥”列的数据类型为int
,然后手动设置身份,如图所示
或者 只是运行此代码
-- 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
不是表中的唯一列,则代码将运行
图像参考fifo
IDENTITY
属性可以被应用于任何数值数据类型(因此它可能是tinyint
,smallint
,int
,bigint
,numeric
,decimal
),唯一的限制是它不能代表分数(所以它不能是 float
或real
,既没有numeric
或decimal
使用非零标度)和ofc,身份规范应与所选数据类型兼容。
创建表时,可以IDENTITY
如下创建列:
CREATE TABLE (
ID_column INT NOT NULL IDENTITY(1,1) PRIMARY KEY,
...
);
该IDENTITY
属性将使列从1开始自动递增。(请注意,列的数据类型必须为整数。)如果要将其添加到现有列,请使用ALTER TABLE
命令。
编辑:经过
测试,我找不到通过各种表的Column Properties窗口更改Identity属性的方法。我想如果您想将一列设置为标识列,则必须使用ALTER TABLE
命令。
也许我缺少了一些东西,但是为什么对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
当说squence时,请使用INSERT命令:
NEXT VALUE FOR blah.blahsequence
SEQUENCE的更多信息和选项
IDENTITY
有时会跳跃而留下空白,然后又会重新填补这些空白。因此IDENTITY
,不能保证总是incrmenet状态
创建表时,可以将关键字IDENTITY
与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)。
要将新记录插入“人”表中,我们将不必为“人名”列指定值(将自动添加一个唯一值):
如果表已被填充,则无法将列更改为IDENTITY列或将其转换为非IDENTITY列。您将需要导出所有数据,然后可以将列类型更改为IDENTITY,反之亦然,然后将数据导入回来。我知道这是一个痛苦的过程,但是我相信除了使用这篇文章中提到的序列,别无选择。
ALTER TABLE ... SWITCH
来切换元数据,而完全不必触摸数据。例如,查看在创建表后如何设置自动增量而不会丢失任何数据?