От MySQL 5 до PostgreSQL 8.4, соглашение с учетом регистра, следует ли использовать его с PostgreSQL - PullRequest
1 голос
/ 07 июля 2011

Что ж, теперь в моей компании мы переходим с MySQL 5 на PostgreSQL 8.4, потому что интерфейсом проекта является PHP, а серверной частью является LISP, у которого есть проблемы с подготовленными MySQL операторами.

Это была только одна из причин, и я не могу это контролировать, поэтому в настоящее время у нас есть длинная база данных, содержащая около дюжины таблиц, которые необходимо перенести. Дело в том, что в MySQL мы использовали SQL-соглашение с учетом регистра, например:

Все таблицы множественного числа, все столбцы имеют префикс имени таблицы (не множественного числа), а слова разделяются заглавными буквами, например: Таблица Сообщения, столбцы PostID, UserID, PostTitle, PostContent, PostUpdated, PostCreated и т. Д.

Хотя я использую PHP PDO во внешнем интерфейсе, есть много запросов, которые выглядят так: SELECT * FROM Posts, которые отлично работали в MySQL, но в PostgreSQL они должны быть выше SELECT * FROM "Posts", или таблицы после миграции должны становиться низкими случай в PostgreSQL (тогда он будет заботиться о двойных кавычках).

Оба решения - отстой, поэтому я был бы рад третьему (например, найти способ, позволяющий продолжать запрашивать таблицы, как раньше, и он все еще работает в PostgreSQL) или что-то еще. Но если это невозможно, я был бы признателен за совет, как это сделать отсюда - например, продолжать создавать таблицы с учетом регистра и запрашивать БД с двойными кавычками вокруг имен таблиц и столбцов и изменять текущие запросы или изменять соглашение об именах на строчными буквами и начните использовать подчеркивание в качестве разделителя между словами, такими как post_title, post_content, и измените все текущие запросы. Очень важно быть лучшим в долгосрочной перспективе, так как это будет последним таким изменением (проект растет).

1 Ответ

4 голосов
/ 07 июля 2011

В долгосрочной перспективе у вас будет гораздо меньше разочарований, если вы перейдете на все строчные и подчеркивания.Спецификация SQL говорит, что если вы не заключите в кавычки идентификатор, он будет свернут в верхний регистр.PostgreSQL делает это, но вместо этого идет в нижнем регистре для удобства чтения.Однако, как только вы начнете заключать в кавычки идентификаторы смешанного регистра, вы должны продолжать это делать.

Обратите внимание, что вы МОЖЕТЕ использовать в своих выражениях без кавычек идентификаторы для попадания во все строчные идентификаторы в БД.Т.е. БД с table_name в нем может быть нажата select * from Table_Name, которая сворачивается во все строчные буквы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...