2017-03-23 11 views
-1

postgresql에서 숫자로 시작하는 테이블을 만들 수있는 제안을 줄 수 있습니까?postgresql에서 숫자로 시작하는 테이블 만들기

+1

그렇지 않습니다. ''SQL 식별자와 키워드는 문자 (az, 그러나 분음 기호와 라틴 문자가 아닌 문자) 또는 밑줄 (_)로 시작해야합니다. "- https://www.postgresql.org/docs/9.0 /static/sql-syntax-lexical.html – David

+0

사실, 큰 따옴표로 표를 만들 수 있습니다. "5258_emp"하지만 그 테이블에 값을 저장하려고 할 때 오류가 표시됩니다. – Ashish

+0

' "사실, 큰 따옴표가있는 테이블을 만들 수 있습니다. 예를 들어,"5258_emp ""'- 당신 자신의 질문에 대답 한 것처럼 들립니다. 항상 식별자를 동봉해야한다는 것을 기억하는 한 제대로 작동해야합니다. 그것은 여전히 ​​최선의 아이디어는 아니지만. – David

답변

1

사용 따옴표, 예를 들면 :

t=# create table "42 Might be not The be$t idea" (i serial); 
CREATE TABLE 
t=# \d+ "42 Might be not The be$t idea" 
              Table "public.42 Might be not The be$t idea" 
Column | Type |         Modifiers         | Storage | Stats target | Descript 
ion 
--------+---------+-----------------------------------------------------------------------------+---------+--------------+--------- 
---- 
i  | integer | not null default nextval('"42 Might be not The be$t idea_i_seq"'::regclass) | plain |    | 

은에 이르게 무엇 가까운 봐주세요. 일반적으로 대소 문자가 혼용되는 경우 특수 문자와 숫자와의 시작 관계는 좋지 않습니다. Postgres는 그러한 관계 이름을 이해하고 작동하지만 다른 소프트웨어로 버그에 걸릴 위험이 있습니다.

경험이 없으면 가장 많이 발을 쏠 것입니다. 예 : pg_dump -t "badName"은 작동하지 않습니다. Bash는 큰 따옴표를 자신의 것으로 이해합니다.이 방법으로 작동하도록되어 있습니다. 따라서 표를 찾으려면 pg_dump -t '"badName"'을 지정해야합니다. 그리고 테이블을 찾지 못하면 운이 좋아집니다. 동일한 스키마에 badnameBadname의 재해가 발생했습니다.

실용 가능하다는 사실 때문에 사용을 시작해야한다는 의미는 아닙니다.

+0

필자는 serial을 사용하여 테이블을 의도적으로 만들었습니다 (시퀀스 자체의 이름을 지정하기 때문에). –

+0

당신 말이 맞아요. 경고를해야합니다. 그래서 나는했다. –