无法在Dbeaver上创建Postgres表时使用"GENERATED ALWAYS AS IDENTITY"?

5
我正在使用Dbeaver创建一个Postgres数据库表,但在使用“GENERATED ALWAYS AS IDENTITY”对我的递增ID值时出现语法错误。很奇怪,因为我在本地主机上创建表时使用了完全相同的语法,没有任何语法错误或无法创建表的问题。
这是我尝试保存表时的SQL预览:
CREATE TABLE public.conversation (
    id bigint NOT NULL GENERATED ALWAYS AS IDENTITY,
    startdatetime timestamptz NOT NULL,
    enddatetime timestamptz NOT NULL,
    CONSTRAINT conversation_pk PRIMARY KEY (id)
);


当我尝试保存表格时,出现“ERROR: syntax error at or near 'GENERATED'”的错误提示。考虑到SQL是由Dbeaver自动生成的,并且在创建本地数据库进行测试时可以正常工作,我认为这是正确的语法。

select version(); 显示什么? - user330315
1
PostgreSQL 9.5.17 运行在 x86_64-pc-linux-gnu 上,由 gcc (Ubuntu 5.4.0-6ubuntu1~16.04.10) 5.4.0 20160609 编译,为 64 位。 - ronhoward
2
标识列在Postgres 10中被引入,您无法在(有些过时的)Postgres 9.5中使用它们。 - user330315
@a_horse_with_no_name,那么我应该怎么做作为替代方案呢? - ronhoward
升级?还是像Gordon展示的那样使用“串行”? - user330315
显示剩余2条评论
1个回答

2

Just use bigserial:

CREATE TABLE public.conversation (
    id bigserial primary key,
    startdatetime timestamptz NOT NULL,
    enddatetime timestamptz NOT NULL
);

一个 bigserial 和一个 generated always as identity 的行为有一些不同。 - user330315
@a_horse_with_no_name . . . 如果由于某种原因 OP 无法使用 generated always as identity,那么它们足够相似。 - Gordon Linoff
2
当然,这就是我在对问题本身的评论中建议使用它的原因。我只是想指出,存在一些细微的差别。 - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接