不,序列号也不会更新。您可以按照以下 3 个简单步骤轻松检查:
1)创建序列器和表:
CREATE SEQUENCE S as int;
CREATE TABLE MyOrders
(
n int,
orderid INT NOT NULL
CONSTRAINT DFT_MyOrders_orderid
DEFAULT(NEXT VALUE FOR S)
);
2)插入一些值:
insert into myorders ( n) values (1);
insert into myorders ( n) values (2);
insert into myorders ( n, orderid) values (3,3);
insert into myorders ( n) values (4);
3) 检查结果:
| N | ORDERID |
----|-------------|--
| 1 | -2147483648 |
| 2 | -2147483647 |
| 3 | 3 | <-- by hand entry
| 4 | -2147483646 | <-- no gap
结论
DEFAULT
子句仅在没有为列分配值(null)时执行。如果您为 column 提供值,则不会调用 sequencer。