我只能给你 SQL Server 的脚本代码。
SQL Server 通过 IDENTITY 来设置
参数有2个,一个是“初始值” 一个是“增量”。
默认情况下 INSERT 语句中,不能对 IDENTITY 的字段进行赋值。
对于 IDENTITY 的列 SQL Server 在 INSERT 的时候,会自动忽略掉。
当IDENTITY列中间的数据被删除,造成数据不连续的时候。可以通过 SET IDENTITY_INSERT 表名 ON/OFF 语句来 允许/禁止 对IDENTITY列进行显式的插入动作。
IDENTITY只能在如下情况下建立:
在创建表时创建新的IDENTITY列
在现有表中创建新的IDENTITY列
不能 把已经存在的列,修改为IDENTITY列
1> CREATE TABLE test_create_tab2 (
2> id INT IDENTITY(1, 1) PRIMARY KEY,
3> val VARCHAR(10)
4> );
5> go
1> INSERT INTO test_create_tab2(val) VALUES ('NO id');
2> go
(1 行受影响)
1> INSERT INTO test_create_tab2(id, val) VALUES (6, 'id no use');
2> go
消息 544,级别 16,状态 1,服务器 HOME-BED592453C\SQLEXPRESS,第 1 行
当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'test_create_tab2' 中的标识列插入显式值。
1> INSERT INTO test_create_tab2(val) VALUES ('A');
2> INSERT INTO test_create_tab2(val) VALUES ('B');
3> INSERT INTO test_create_tab2 VALUES ('C');
4> INSERT INTO test_create_tab2 VALUES ('D');
5> go
1> SELECT * FROM test_create_tab2;
2> go
id val
----------- ----------
1 NO id
2 A
3 B
4 C
5 D
(5 行受影响)
-- 删除一个数据,造成数据不连续.
1> DELETE FROM test_create_tab2 WHERE id = 3;
2> go
(1 行受影响)
-- 允许将显式值插入表的标识列中
1> SET IDENTITY_INSERT test_create_tab2 ON
2> go
1> INSERT INTO test_create_tab2(id, val) VALUES (3, 'id is use');
2> go
(1 行受影响)
--不允许将显式值插入表的标识列中
1> SET IDENTITY_INSERT test_create_tab2 OFF
2> go
1> SELECT * FROM test_create_tab2;
2> go
id val
----------- ----------
1 NO id
2 A
3 id is use
4 C
5 D
(5 行受影响)