如何创建起始值为0的自增列?解决IDENTITY语句起始值报错问题
解决IDENTITY列起始值为0的报错问题
这个坑我之前踩过!你遇到的报错是因为大多数数据库的IDENTITY列默认MINVALUE(最小值)是1,而你指定了START WITH 0,0比默认的MINVALUE小,所以数据库直接拒绝执行了。
正确的实现方法
只需要在IDENTITY的定义里显式加上MINVALUE 0,告诉数据库允许的最小值是0就行,修正后的SQL语句如下:
CREATE TABLE security ( SID INTEGER GENERATED BY DEFAULT AS IDENTITY ( START WITH 0 INCREMENT BY 2 MINVALUE 0 -- 必须显式设置最小值为0 ) );
额外说明
- 如果你用的是SQL Server,其实更简单,直接用
IDENTITY(0, 2)语法即可,它会自动把MINVALUE设为0:CREATE TABLE security ( SID INTEGER IDENTITY(0, 2) ); - 测试验证:插入几条数据后,你会看到SID的值依次是0、2、4...完全符合你的需求。
内容的提问来源于stack exchange,提问作者Normal
相关产品推荐
相关产品推荐

