SQL添加自增主键列提示IDENTITY附近语法错误如何解决?
报错原因
IDENTITY(1,1)是SQL Server等支持T-SQL语法的数据库专属的自增列定义语法,你当前使用的是PostgreSQL数据库,该数据库不兼容这类T-SQL写法,因此触发语法报错。- 补充说明:PostgreSQL 10及以上版本虽支持IDENTITY类型的自增列,但语法规则和T-SQL存在差异;10以下的旧版本PostgreSQL完全不支持IDENTITY属性,也会抛出同类报错。
解决方案
根据你使用的PostgreSQL版本选择对应写法即可,两种写法都自动满足自增、唯一、非空、主键的要求,主键本身自带唯一、非空约束,无需额外声明冗余属性。
方案1:PostgreSQL 10及以上版本(推荐标准写法)
ALTER TABLE cities ADD city_id int GENERATED ALWAYS AS IDENTITY PRIMARY KEY;
方案2:PostgreSQL 10以下旧版本
使用PostgreSQL专属的自增封装类型SERIAL即可,底层会自动创建关联的序列完成自增逻辑:
ALTER TABLE cities ADD city_id SERIAL PRIMARY KEY;
如果你的表中已经存在历史数据,执行上述语句会自动为所有已有行填充连续的自增数值,无需额外手动处理。
内容的提问来源于stack exchange,提问作者Tim4ios
相关产品推荐
相关产品推荐

