0

我使用 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);

但是又遇到了同样的问题。

有任何想法吗?谢谢。

4

1 回答 1

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
于 2018-12-18T13:02:59.590 回答