Чувствительность к регистру идентификаторов
Чувствительность объектов к регистру частично определяется операционной системой. Системы на базе Unix чувствительны к регистру, Windows — нет, а Mac OS X обычно нечувствительна к регистру по умолчанию, но устройства могут быть настроены на чувствительность к регистру с помощью утилиты Disk Utility.
Имена баз данных, таблиц, псевдонимов таблиц и триггеров зависят от чувствительности системы к регистру, в то время как имена индексов, столбцов, псевдонимов столбцов, сохранённых процедур и событий никогда не чувствительны к регистру.
Имя группы файлов журнала чувствительно к регистру.
Переменная серверной системы lower_case_table_names играет ключевую роль. Она определяет, сравниваются ли имена таблиц, псевдонимы и имена баз данных с учётом регистра. Если она установлена в 0 (по умолчанию в системах на базе Unix), имена таблиц, псевдонимы и имена баз данных сравниваются с учётом регистра. Если установлена в 1 (по умолчанию в Windows), имена хранятся в нижнем регистре и не сравниваются с учётом регистра. Если установлена в 2 (по умолчанию в Mac OS X), имена хранятся как объявлены, но сравниваются в нижнем регистре.
Таким образом, можно сделать системы на базе Unix похожими на Windows и игнорировать чувствительность к регистру, но обратное неверно, так как подсистема файловой системы Windows не поддерживает это.
Даже в системах, нечувствительных к регистру, необходимо использовать одинаковый регистр в одном операторе. Следующее утверждение неверно, поскольку оно ссылается на имя таблицы с другим регистром.
SELECT * FROM a_table WHERE A_table.id>10;
Полный список правил именования идентификаторов см. в Именах идентификаторов.
Обратите внимание, что lower_case_table_names — это параметр инициализации базы данных. Это означает, что, наряду с innodb_page_size, эта переменная должна быть установлена перед запуском mariadb-install-db и не будет изменять поведение серверов, если не применена перед созданием основных системных баз данных.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/identifier-case-sensitivity/