mssql中创建自动增长列的方法

在 MSSQL 数据库中,经常需要创建带有自动增长列的表。自动增长列指的是在插入记录时,MSSQL 自动为表中的某一列生成一个唯一的递增的数值,以充当主键或唯一标识符,在数据库设计中使用广泛。那么,如何在 MSSQL 中创建带有自动增长列的表呢?下面将详细介绍。

1. 使用 IDENTITY 属性创建自动增长列

在 MSSQL 中,可以使用 IDENTITY 属性为表中的某一列创建自动增长属性。IDENTITY 属性的语法为:

CREATE TABLE table_name (

column_name1 data_type identity [(seed, increment)],

column_name2 data_type,

.....

);

其中,IDENTITY 属性必须与整数数据类型(int, bigint, smallint, tinyint)一起使用。在括号中,可以使用可选的参数 seed 和 increment 来指定起始值和增长值,它们的默认值分别为 1 和 1。

1.1 创建不带有参数的自动增长列

下面的示例演示如何创建一个带有自动增长列的表:

CREATE TABLE employees (

emp_id int identity,

first_name varchar(50) not null,

last_name varchar(50) not null,

salary money not null

);

在上面的示例中,emp_id 列会被自动设置为一个唯一递增的整数值,并充当主键或唯一标识符。我们在插入记录时不需要为 emp_id 指定数值,MSSQL 会自动为其生成一个值。

1.2 创建带有参数的自动增长列

您可以通过指定种子(seed)和增量(increment)参数更改自动增长列的初始值和增长值。种子值指定第一个插入的行中自动增长列的初始值,增量值指定每个新插入的行中自动增长列的增量值。

例如,如果您使用以下代码创建了一个名为 products 的表:

CREATE TABLE products (

product_id int identity (1, 1),

product_name varchar(50) not null,

price money not null

);

则该表中的 product_id 列将自动设置为一个唯一递增的整数值,起始值为 1,增量为 1。

2. 使用 SEQUENCE 对象创建自动增长列

在 MSSQL 2012 及以上版本中,可以使用 SEQUENCE 对象来创建自动增长列。SEQUENCE 对象是生成数字序列的对象,它允许您创建一个可重复使用的序列,以为表中的任何列生成唯一值。

2.1 创建 SEQUENCE 对象

要创建 SEQUENCE 对象,您可以使用以下语法:

CREATE SEQUENCE sequence_name

[AS data_type ]

[START WITH start_value]

[INCREMENT BY increment_value]

[ { MINVALUE [ minimum_value ] } | { NO MINVALUE } ]

[ { MAXVALUE [ maximum_value ] } | { NO MAXVALUE } ]

[ CYCLE | { NO CYCLE } ]

[ CACHE [ cache_size ] | { NO CACHE } ]

[ ; ]

2.2 使用 SEQUENCE 对象创建自动增长列

要使用 SEQUENCE 对象创建自动增长列,可以将 NEXT VALUE FOR 作为默认值分配给表中的列,并将 SEQUENCE 对象的名称指定为 arguments。例如:

CREATE SEQUENCE emp_sequence

AS int

START WITH 1

INCREMENT BY 1

MINVALUE 1

MAXVALUE 1000

NO CYCLE;

GO

CREATE TABLE employees (

emp_id int DEFAULT (NEXT VALUE FOR emp_sequence),

first_name varchar(50) not null,

last_name varchar(50) not null,

salary money not null

);

在上面的示例中,emp_id 列使用 NEXT VALUE FOR emp_sequence 作为默认值,表明该列使用 emp_sequence SEQUENCE 对象的下一个值。

总结

在 MSSQL 中,可以通过使用 IDENTITY 属性为表中的列创建自动增长属性,也可以使用 SEQUENCE 对象来生成数字序列。无论您选择哪种方法,MSSQL 都提供了很好的支持来创建自动增长列,以及表中的唯一标识符和主键。

数据库标签