语法错误AUTO_INCREMENT

时间:2018-07-18 14:26:57

标签: sql postgresql

我需要创建一个具有自动递增主键的表,这样我就可以了:

String sql = "CREATE TABLE Home" +
                       "(id INTEGER not NULL AUTO_INCREMENT PRIMARY KEY, " +
                       " name VARCHAR(255), " + 
                       " value DOUBLE PRECISION, " + 
                       " data DATE " + 
                       " )"; 

问题是当我执行此查询时,我得到:

Syntax error AUTO_INCREMENT

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:3)

PostgreSQL中没有auto_increment。请改用serial

您的创建表语句应为:

create table Home (
   id serial not null primary key,
   name varchar(255),
   value double precision,
   data date
);

Here's updated documentation(关于完整的PostgreSQL数据类型)。

使用完全相同的工作示例来查看this DB-FIDDLE

答案 1 :(得分:2)

如果您使用的是PostgreSQL v10或更高版本,则可能要使用符合标准的 identity列语法:

CREATE TABLE home (
   id integer GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
   name varchar(255),
   value double precision,
   data date
);

除符合标准外,它的优点还在于,如果您尝试为id列显式添加一个值,则会收到一条错误消息,该错误通常会导致与以后自动生成的冲突值。