如何将序列设置为Postgres-XL中的默认值



i使用postgres-xl 10r1。我创建了表packs和序列packs_id_seq相同的SQL:

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);

但再次有同样的问题。

有什么想法吗?谢谢。

您可以在此处使用"串行"数据类型,因此您的创建表将就像

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

相关内容

  • 没有找到相关文章

最新更新