简体   繁体   English

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

[英]How to set SEQUENCE as DEFAULT in Postgres-XL?

I use Postgres-XL 10R1. 我使用Postgres-XL 10R1。 I created table packs and sequence packs_id_seq same SQL: 我创建了表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;

I tried to use packs_id_seq as default value for id column. 我尝试将packs_id_seq用作ID列的默认值。

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

But have some problem 但是有一些问题

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

Why rows didn't insert? 为什么没有插入行?

So, I change clause for DISTRIBUTE . 因此,我更改了DISTRIBUTE子句。

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

But have same problem again. 但是又有同样的问题。

Any ideas? 有任何想法吗? Thanks. 谢谢。

You can use "serial" datatype here, so your create table will be like 您可以在此处使用“串行”数据类型,因此您的创建表将类似于

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

and now when inserting records, 现在插入记录时

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

it will have record like 它会像

id | name 
1  | test

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM