如何在 Postgres-XL 中将 SEQUENCE 设置为 DEFAULT?
Posted
技术标签:
【中文标题】如何在 Postgres-XL 中将 SEQUENCE 设置为 DEFAULT?【英文标题】:How to set SEQUENCE as DEFAULT in Postgres-XL? 【发布时间】:2018-12-18 12:10:49 【问题描述】:我使用 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);
但又遇到同样的问题。
有什么想法吗? 谢谢。
【问题讨论】:
【参考方案1】:你可以在这里使用“串行”数据类型,所以你的创建表会像
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
【讨论】:
以上是关于如何在 Postgres-XL 中将 SEQUENCE 设置为 DEFAULT?的主要内容,如果未能解决你的问题,请参考以下文章