2016-11-25 4 views
0

システムを作成しようとしています。何年も前からスキーマを使用してデータをソートする必要があります。たとえば、datos_2016というスキーマがあります。 seq_datosという名前のシーケンスを作成します。デフォルト以外のスキーマにシーケンスを含むテーブルを作成できません

私はテーブルdatosを作成しようとcdataためのシーケンスを設定すると、それは

言う「エラーが発生しました:ERROR関係 『seq_data』んではない終了」

しかし、スキーマ "public"を作成してそこにシーケンスを作成すると、エラーは発生しません(テーブルは正常に作成されます)。

他のスキーマでシーケンスを作成できないのはなぜですか?

のSQL CODE:

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; 

答えて

0

あなたは完全にシーケンス名修飾する必要があります。

CREATE TABLE datos_2016.data 
(
    cdata integer NOT NULL DEFAULT nextval('datos_2016.seq_data'), 
    .... 
); 
+0

グレートに、それはそれでした!私は、 "パブリック"スキーマを作成していなくても、スキーマを指定する必要がないと仮定しました – JuJoGuAl

関連する問題