Tôi đang chuyển một số mã từ một số phiên bản Sybase sang PostgreSQL. Đây là một ứng dụng C sử dụng thư viện máy khách Sybase. Cách tiếp cận của tôi là viết một lớp dịch để dịch các cuộc gọi dbsqlexec()
sang PQexec()
(ví dụ). Phần đó chủ yếu là làm việc.
Dường như cơ sở dữ liệu Sybase được thiết lập theo cách phân biệt chữ hoa chữ thường (đối với tên đối tượng cơ sở dữ liệu). Ví dụ, có cả WIDGET
bảng và widget
bảng. Có vẻ như quy ước trong ứng dụng này là các tên viết hoa chỉ ra các bảng dữ liệu thực tế, trong khi các tên chữ thường được sử dụng làm bảng tạm thời khi chạy một số xử lý.
Theo 4.1 Cấu trúc từ vựng , " Các từ khóa và số nhận dạng không được trích dẫn không phân biệt chữ hoa chữ thường. " Tôi biết rằng tôi có thể trích dẫn hai số định danh để vô hiệu hóa tính năng gập tự động thành chữ thường, nhưng tôi không muốn thực hiện điều đó một cách thủ công thông qua hàng trăm dòng mã sử dụng cơ sở dữ liệu này.
Có cách nào để thiết lập PostgreSQL để vô hiệu hóa trường hợp gấp tự động này cho các định danh đối tượng cơ sở dữ liệu không?
Cách thay thế của tôi sẽ là viết một số mã kiểm tra từng câu lệnh SQL và đặt dấu ngoặc kép xung quanh mỗi mã định danh (đó không phải là từ khóa).
select * from TaBlEnAmE
sẽ tham chiếu cùng bảng với select * from tablename
hoặcselect * from TABLENAME
create table "tableName" (id integer primary key);
, và sau create table "tablename" (id integer primary key);
đó truy vấn select * from TaBlEnAmE;
này sẽ chọn từ "tablename", không phải từ "tên bảng". "Tên không được trích dẫn luôn được gấp lại thành chữ thường" .