2017-05-11 1 views
2

Donc je télécharge 150 000 lignes de données dans une base de données via HTTP via le backend Python, et le téléchargement prend du temps, donc je l'insère dans une nouvelle table que je puis échange avec (en renommant) l'ancienne table:Modifier la séquence pour la relier à une autre table

create table tmp (like main); 
alter sequence main_id_seq restart; 
alter table tmp alter column id set default nextval('main_id_seq'); 
drop table main cascade; -- THIS REMOVES THE SEQUENCE ^^^^^^^ 
alter table tmp rename to main; 

Comment puis-je modifier la séquence de ne pas être liée à la table main, de sorte que lorsque je laisse tomber la table main, la séquence resterait liée à la tmp actuelle table (nouveau main)?

Répondre

1

Vous pouvez le faire en faisant la colonne « posséder » la séquence

alter sequence main_id_seq 
    owned by main.id; 
+0

Figured il doit y avoir un moyen simple comme ça, mais n'a pas pu trouver la «possédé par» de n'importe où ... Merci! –

+1

@MarkusMeskanen: c'est juste ici: https://www.postgresql.org/docs/current/static/sql-altersequence.html –

+0

Ouais je dois lire les docs plus, je suis encore assez nouveau avec PSQL. Fera quelques recherches supplémentaires la prochaine fois, merci :) –

1

use séquence alter:

t=# create table s120(i bigserial); 
CREATE TABLE 
t=# \d+ s120; 
              Table "public.s120" 
Column | Type |     Modifiers      | Storage | Stats target | Description 
--------+--------+--------------------------------------------------+---------+--------------+------------- 
i  | bigint | not null default nextval('s120_i_seq'::regclass) | plain |    | 

t=# create table s121(i bigint); 
CREATE TABLE 
t=# alter sequence s120_i_seq owned by s121.i; 
ALTER SEQUENCE 
t=# drop table s120; 
DROP TABLE 
t=# alter table s121 alter COLUMN i set default nextval('s120_i_seq'::regclass); 
ALTER TABLE 
t=# \d+ s121 
             Table "public.s121" 
Column | Type |    Modifiers    | Storage | Stats target | Description 
--------+--------+-----------------------------------------+---------+--------------+------------- 
i  | bigint | default nextval('s120_i_seq'::regclass) | plain |    | 
+0

Merci, fonctionne bien :) –