在Postgres-XL中如何将SEQUENCE设置为DEFAULT?

时间:2018-12-18 12:10:50

标签: postgresql postgres-xl postgres-10

我使用Postgres-XL 10R1。 我使用相同的SQL创建表packs和序列packs_id_seq

CREATE TABLE packs (
    id integer NOT NULL,
    name varchar(10) NOT NULL
) DISTRIBUTE BY REPLICATION;

CREATE SEQUENCE packs_id_seq
    AS integer
    START WITH 1
    INCREMENT BY 1
    NO MINVALUE
    NO MAXVALUE
    CACHE 1;

我尝试使用packs_id_seq作为id列的默认值。

ALTER TABLE packs ALTER COLUMN id SET DEFAULT (nextval('packs_id_seq'));

但是有问题

INSERT INTO packs (name) VALUES ('test');
INSERT 0 0

为什么没有插入行?

因此,我更改了DISTRIBUTE的子句。

ALTER TABLE packs DISTRIBUTE BY ROUNDROBIN;
ALTER TABLE packs DISTRIBUTE BY MODULO(id);
ALTER TABLE packs DISTRIBUTE BY HASH(id);

但是再次遇到同样的问题。

有什么想法吗? 谢谢。

1 个答案:

答案 0 :(得分:0)

您可以在此处使用“串行”数据类型,因此您的创建表将类似于

CREATE TABLE packs (
    id serial NOT NULL,
    name varchar(10) NOT NULL
) DISTRIBUTE BY REPLICATION;

现在插入记录时,

INSERT INTO packs (name) VALUES ('test');

它将具有类似

的记录
id | name 
1  | test