database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
ㆍPostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
PostgreSQL Q&A 4535 게시물 읽기
No. 4535
primary key
작성자
노상식
작성일
2003-01-17 01:34
조회수
1,325

안녕하세요... 초보자 노상식입니다.

 

이번엔 프라이머리 키에 설정에 대해 질문을 드릴려구 하는데요.

 

아시는 분 계시면 가르쳐 주십시요.

 

테이블을 생성시, 깜빡잊고 프라이머리 키 설정을 안했는데요, 자료까지 다

 

입력한 상태입니다. 테이블 크기가 작다면 다시 처음부터 테이블 만들때 프

 

라이머리 키를 설정을 하면서 만들면 되겠는데요, 크기가 제법 커서 입력하

 

는데 시간이 많이 걸렸습니다.

 

테이블 만든다음에 프라이머리 키를 설정하는 질의어 좀 갈쳐주십시요.

이 글에 대한 댓글이 총 2건 있습니다.

7.3.x 버전에서, alter table 명령이 꽤 많이 확장 되었습니다.

 

ALTER TABLE distributors ADD PRIMARY KEY (dist_id);

ALTER TABLE distributors DROP CONSTRAINT distributors_pkey;

 

---

이하 버전에서 저수준으로 primary key 조작이 필요해 진다면,

가장 바람직한 방법은

대상 테이블을 덤프 받아서(oid까지도 필요하다면, 그것까지도), 스키마 정의하는 부분에서 primary 지정하고, 다시 그대로 테이블을 만들면 되겠지요.

(시스템 사정에 따라 시간이 다소 걸리겠지만, 몇만건 정도의 자료라면, 그리고, 트리거가 걸려있지 않은 자료라면, 순십간에 만들어집니다)

 

그게 불가능하다면, 권장하지 않는 방법이지만,

저수준으로 가능하기도 합니다.

시스템 카타로그를 건드리는 방법일터인데,

pg_class, pg_attribute ...

그리고, primary key 이름 규칙에 따라 Unique index 를 하나 만들어주고 ...

아무튼 안해봐서 모르겠습니다.

김상기(ioseph)님이 2003-01-17 05:42에 작성한 댓글입니다.

인덱스를 생성하시기 바랍니다.

 

CREATE INDEX 명령을 이용방법

 

CREATE [UNIQUE] INDEX 인덱스명 ON 테이블(열)

 

unique 옵션은 인덱스를 생성하고자 하는 열이 중복항목을 포함하지 않도록 지정해준다는 뜻,

\copy 명령을 이용해서 텍스트형의 자료들을

갖오 왔을때,, index 명령을 잘 사용하면

쿼리 비용을 몇십배 줄일수가 있다네요 ^^:;

그럼 성공하시길....

psql님이 2003-01-18 00:36에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4543기본적인 사용자설정과 디비생성.... [2]
재학
2003-01-22
1721
4539left()가 없나요??? [2]
고종길
2003-01-17
1049
4536오라클과 같은 힌트사용이 가능한지 궁금합니다. [2]
이창욱
2003-01-17
1294
4535primary key [2]
노상식
2003-01-17
1325
4534이게 왜 에러일까요? 아무리봐도 unique문제인듯 [2]
박기원
2003-01-16
1020
4533초보질문입니다...(GRANT) [4]
고종길
2003-01-16
1122
45321번 테이블에서 2번테이블로 정보를 이동할때 [2]
눈사람
2003-01-15
918
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다