我使用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);
但是再次遇到同样的问题。
有什么想法吗? 谢谢。
答案 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