일부 버전의 Sybase에서 PostgreSQL로 코드를 이식하고 있습니다. Sybase 클라이언트 라이브러리를 사용하는 C 애플리케이션입니다. 내 접근 방식은 호출 dbsqlexec()
을 PQexec()
(예 :)로 변환하는 변환 계층을 작성하는 것 입니다. 그 부분은 대부분 작동합니다.
Sybase 데이터베이스는 데이터베이스 개체 이름과 관련하여 대 / 소문자를 구분하여 설정 한 것으로 보입니다. 예를 들어, WIDGET
테이블과 테이블 이 모두 widget
있습니다. 이 응용 프로그램의 규칙은 모든 대문자 이름이 실제 데이터 테이블을 나타내는 반면 소문자 이름은 일부 처리를 실행할 때 임시 테이블로 사용된다는 것입니다.
4.1 Lexical Structure 에 따르면 " 키워드와 따옴표가없는 식별자는 대소 문자를 구분하지 않습니다. "나는 식별자를 큰 따옴표로 묶어 소문자로 자동 접기를 비활성화 할 수 있다는 것을 알고 있습니다. 이 데이터베이스를 사용하는 코드
데이터베이스 객체 식별자에 대해 자동 케이스 접기를 비활성화하도록 PostgreSQL을 설정하는 방법이 있습니까?
내 대안은 각 SQL 문을 검사하고 키워드가 아닌 모든 식별자 주위에 큰 따옴표를 넣는 코드를 작성하는 것입니다.
select * from TaBlEnAmE
다음과 같은 표를 참조 select * from tablename
하거나select * from TABLENAME
create table "tableName" (id integer primary key);
, create table "tablename" (id integer primary key);
이 쿼리 select * from TaBlEnAmE;
는 "tableName"이 아니라 "tablename"에서 선택합니다. "인용되지 않은 이름은 항상 소문자로 접 힙니다 . "