Postgresql Can';t使用非默认模式中的序列创建表

Postgresql Can';t使用非默认模式中的序列创建表,postgresql,schema,sequence,Postgresql,Schema,Sequence,我正在尝试创建一个系统,在这个系统中,我想对多年的数据进行排序(使用模式),例如,现在我有一个名为datos\u 2016的模式,然后我创建了一个名为seq\u datos的序列 当我尝试创建表datos并设置cdata的顺序时,它会显示 出现错误:错误关系“seq_data”不存在 但是如果我创建模式“public”,然后在那里创建序列,就不会发生错误(表创建成功) 为什么我不能在另一个模式中创建序列 SQL代码: CREATE TABLE datos_2016.data ( cdata

我正在尝试创建一个系统,在这个系统中,我想对多年的数据进行排序(使用模式),例如,现在我有一个名为
datos\u 2016
的模式,然后我创建了一个名为
seq\u datos
的序列

当我尝试创建表
datos
并设置
cdata
的顺序时,它会显示

出现错误:错误关系“seq_data”不存在

但是如果我创建模式“public”,然后在那里创建序列,就不会发生错误(表创建成功)

为什么我不能在另一个模式中创建序列

SQL代码:

CREATE TABLE datos_2016.data
(
   cdata integer NOT NULL DEFAULT nextval('seq_data'), 
   CONSTRAINT fk_cdata PRIMARY KEY (cdata) USING INDEX TABLESPACE sistema_index
) 
WITH (
  OIDS = FALSE
)

TABLESPACE sistema_data;
序列号:

CREATE SEQUENCE datos_2016.seq_data
  INCREMENT 1
  MINVALUE 1
  MAXVALUE 9223372036854775807
  START 1
  CACHE 1;
ALTER TABLE datos_2016.seq_data
  OWNER TO postgres;
GRANT ALL ON SEQUENCE datos_2016.seq_data TO public;
GRANT ALL ON SEQUENCE datos_2016.seq_data TO postgres;

您需要完全限定序列名称:

CREATE TABLE datos_2016.data
(
   cdata integer NOT NULL DEFAULT nextval('datos_2016.seq_data'), 
   ....
);
创建表datos_2016.data
(
cdata integer NOT NULL默认值nextval('datos_2016.seq_data'),
....
);

您需要完全限定序列名称:

CREATE TABLE datos_2016.data
(
   cdata integer NOT NULL DEFAULT nextval('datos_2016.seq_data'), 
   ....
);
创建表datos_2016.data
(
cdata integer NOT NULL默认值nextval('datos_2016.seq_data'),
....
);
试试这个
nextval('datos_2016.“seq_data”)
试试这个
nextval('datos_2016.“seq_data”)

太好了,就是这样!我假设没有创建“public”模式不需要指定schemaGreat,就是这样!我假设没有创建“public”模式并不需要指定模式