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 4482 게시물 읽기
No. 4482
테이블 삭제..
작성자
이경욱
작성일
2002-12-18 01:49
조회수
1,446

drop table t

이러면 t라는 테이블이 삭제 되었습니다.

그런데 지금 분명 테이블이 있고 삭제할 테이블명도

정확히 입력했는데 그런 테이블이 없다면서 에러를 냅니다.

지금.. 제 정신은 아주 말짱하구요. 오타없습니다. 혹시나 해서

tab키를 쳐서 테이블명을 완성하여 drop해보기도 했지만 똑같습니다.

조금 황당하면서 많이 당황스럽습니다. 그 테이블명은

MemberProfiles 입니다. 대소문자를 섞어 이름지었기 때문인가요?

아.. psql -f 해서 sql문이 있는 파일을 불러다 create하는 도중에

에러가 났었습니다. create table하고 그 다음 sql이 index를

만드는 거였는데.. 지금 그 에러문을 다시 보긴 힘들것 같아 정확히

어떤 에러였는지는 말씀 못드리지만 대강 기억으로 그 에러문에서

memberprofiles 라는 테이블명이 존재하지 않는다는 에러 같았습니다.

윈도우 다시 까는 기분으로 DB다시 깔까요? 머리쓰는거 보다

단순무식한 일들은 자신도 있고 결벽증 같은게 있어서 에러같은거는

용납못하는 성격이거든요.

 

그리고 이건 좀 다른 문제이지만.. 한테이블이 있는데 이 테이블에

FK가 여러개 입니다. 이 테이블 저 테이블과 연관되어 있기때문에

FK가 네개정도로 늘어났는데 create table 할때 문법이 어떻게 되나요?

그 테이블만 직접 보여드리면.. (속성정의나 실제 쓰임은 좀 다릅니다.

그래서 제딴에는 이해하시기 쉽도록 일반화 시켜봤는데 더 이해가 안가실런지도..-_-)

 

CREATE TABLE t1 (

id char(6), -- t0 테이블 PK (학번같은거..)

course varchar(6), -- t2 테이블의 PK (수강과목 같은거..)

point int default 0 not null, -- 학점

 

primary key(id, course), -- 복합키

-- 하나를 잡는것은 밑에 처럼 하면 되죠?

foreign key(id) references t0 on delete cascade

);

 

대강 이런데 id, course는 다른 테이블에선 각각 그 테이블의 PK입니다.

t1이라는 테이블은 학점 같은거구요.

id를 PK로 가지는 테이블 t0은 학생 같은 속성을 가지고

course를 PK로 가지는 테이블 t2는 수강과목 같은겁니다.

학점(t1테이블)이라는 테이블에서 id, course가 복합키가 되구요.

요약하면 학점관리 같은건데 제가 테이블 설계하는 쪽으로 잘 몰라서

제대로 설계한건지 모르겠네요. 한번 보시고 조언해주시면 연말에

큰 복 받으실꺼에요. ^^;

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

pgAdmin II라는걸 다운받아서.. 마우스로 한번 삭제해봤습니다.

제 눈에서 사라지는걸로 보아 깨끗하게 삭제되었다는

기분이 들어 흡족은 하나.. 재발방지를 위해 원인파악이라도 되시는 분은 답변 부탁드립니다.

아울러.. FK 질문에도 답변주시면 내년에 복

많이 받으실꺼에요. ^^

이경욱님이 2002-12-18 02:55에 작성한 댓글입니다.

테이블 이름에 공백이나 그런게 들어간게 아닌지.. -.-;;

따옴표로 묶어서 해보시면 될지도 모릅니다..

그래도 안된다면 vacuum 등으로 치료(?)를 한번 ^^;

 

FK의 경우에는 1개의 테이블에 다수의 FK가 존재할수도 있습니다. 하지만 멀티컬럼으로 잡혀있는 프리마리키의 컬럼들을 따로따로 FK로 사용할순 없습니다.

PRIMARY KEY(col1, col2) 이렇게 되어 있으면

다른 테이블에서 references table(col1) on action...

이런식으로 FK를 사용할순 없습니다 (적어도 7.2 이상에서는 안되는걸로..)

 

구현이 가능은 합니다. 구현하고 싶으시다면 트리거에 대한 메뉴얼을 보시면 될듯 합니다.

테이블을 만들때 references table1(col1) on delete action on update action 하게 되면 FK라는 특수한 어떤 상황이 있는 테이블이 만들어 지는거 같지만 사실 내부에서는 테이블을 만들고 insert, update, delete 등의 동작에 대한 트리거를 생성합니다.

CREATE TABLE 시에 FK설정을 하지 마시고 관련 트리거를 만들어주시면 됩니다. (대신 꽤 복잡해지겠죠? ^^;;)

신기배(nonun)님이 2002-12-18 03:14에 작성한 댓글입니다.

테이블을 인식하지 못하는 이유가

테이블명에 대소문자를 섞여 있기때문인것 같습니다.

소문자로만 테이블명을 만드니까 문제가 없구요.

그렇지만,

odbc로나 pgAdminII에서는 문제가 없었습니다.

단지 psql에서만 그런것 같네요.

 

제 버전은 7.2.1 입니다.

이경욱님이 2002-12-18 14:53에 작성한 댓글입니다.

http://database.sarang.net/database/postgres/manual/manual-7.2/sql-syntax.html#SQL-SYNTAX-IDENTIFIERS

 

차근히 잘 읽어보세요. 아주 재밌습니다. :)

 

다른 RDBMS도 같은 규칙을 따를겝니다.

김상기(ioseph)님이 2002-12-19 01:47에 작성한 댓글입니다.

테이블을 생성할때 따옴표의 차이군요 ^^;;

전 따옴표 하는 버릇이 없어놔서 -.-;;

작은 습관이지만 버릇을 들여야 하는데..

신기배(nonun)님이 2002-12-19 03:42에 작성한 댓글입니다.

제가 잘못 이해했군요 -_-;

"select" 이부분만 보고 얘기했습니다 =_=

신기배(nonun)님이 2002-12-19 04:03에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
4486[질문] point 좌표에 인덱스 거는 법좀 알려주세여 [1]
이근호
2002-12-18
882
4484[질문]오라클 설치 오류.,...
정종훈
2002-12-18
1013
4483실시간 트랜젝션 로그가 있나요? [2]
skyer9
2002-12-18
1195
4482테이블 삭제.. [6]
이경욱
2002-12-18
1446
4485┕>Re: FK 잡기.. [1]
이경욱
2002-12-18 13:35:54
1072
4481특정날짜/시각에 실행되는 SP/트리거가 가능한지.. [1]
윤명식
2002-12-17
1233
4478질의처리시간측정에 대한 sql문 [2]
박대일
2002-12-16
1037
4477[궁금2] Servet 에서 JDBC 사용중 예외인데요..
JDBC
2002-12-16
968
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다