2017-05-11 10 views
2

그래서 파이썬 백엔드를 통해 HTTP를 통해 데이터베이스에 약 150,000 행의 데이터를 업로드하고 업로드에 약간의 시간이 소요되므로 필자는이 테이블을 새 테이블에 삽입합니다. 나는 내가 main 테이블을 삭제할 때, 순서가 tmp 현재 연결을 유지할 것이라고 있도록 main 테이블에 링크 할 수 없습니다하는 순서를 변경할 수있는 방법다른 테이블에 연결될 시퀀스 변경

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; 

: (이름 변경에 의한) 이전 테이블과 스왑 표 (신 main)?

답변

1

당신은 열을 만들어 순서를 "소유"고 할 수

alter sequence main_id_seq 
    owned by main.id; 
+0

체격이이 같은 간단한 방법이 될해야하지만 찾을 수 없습니다 어디에서나 소유하고있는 '고맙습니다!' –

+1

@MarkusMeskanen : 바로 여기 있습니다 : https://www.postgresql.org/docs/current/static/sql-altersequence.html –

+0

그래, 내가 더 많은 문서를 읽어야하는데, 나는 아직도 PSQL이 아니라 새로운 편입니다. 다음에 몇 가지 추가 조사를 할 것입니다, 감사합니다 :) –

1

use 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

고마워, 작품 :) –