Синтаксис комментариев
В MariaDB поддерживаются три вида комментариев:
- От '
#' до конца строки:SELECT * FROM users; # This is a comment
- От '
--' до конца строки. Пробел после двух тире обязателен (как в MySQL).SELECT * FROM users; -- This is a comment
- Комментарии C-стиля от открывающей '
/*' до закрывающей '*/'. Комментарии такого вида могут занимать несколько строк:SELECT * FROM users; /* This is a multi-line comment */
Вложенные комментарии возможны в некоторых ситуациях, но они не поддерживаются и не рекомендуются.
Исполнимые комментарии
Для обеспечения портативности между разными базами данных, MariaDB поддерживает исполнимые комментарии. Эти специальные комментарии позволяют встраивать SQL-код, который не будет выполняться при запуске на других базах данных, но будет выполняться при запуске на MariaDB.
MariaDB поддерживает как формат исполнимых комментариев MySQL, так и немного изменённую версию, специфичную для MariaDB. Таким образом, если у вас есть SQL-код, работающий в MySQL и MariaDB, но не в других базах данных, вы можете обернуть его в исполнимый комментарий MySQL, а если у вас есть код, специально использующий функции, доступные только в MariaDB, вы можете использовать специфичный для MariaDB формат, чтобы скрыть код от MySQL.
Синтаксис исполнимых комментариев
Синтаксис исполнимых комментариев MySQL и MariaDB:
/*! MySQL or MariaDB-specific code */
Код, который должен выполняться только начиная с определённой версии MySQL или MariaDB:
/*!##### MySQL or MariaDB-specific code */
Числа, представленные '######' в примерах синтаксиса выше, указывают минимальные версии MySQL и MariaDB, которые должны выполнить комментарий. Первое число — это большая версия, следующие 2 числа — это меньшая версия, и последние 2 — это уровень исправления.
Например, если вы хотите встроить код, который должен выполняться только в MySQL или MariaDB начиная с версии 5.1.0, вы сделаете следующее:
/*!50100 MySQL and MariaDB 5.1.0 (and above) code goes here. */
Синтаксис исполнимых комментариев только для MariaDB (начиная с MariaDB 5.3.1):
/*M! MariaDB-specific code */ /*M!###### MariaDB-specific code */
MariaDB игнорирует исполнимые комментарии в стиле MySQL, у которых номер версии находится в диапазоне 50700..99999. Это необходимо для пропуска функций, введённых в MySQL-5.7, которые ещё не перенесены в MariaDB 10.x.
/*!50701 MariaDB-10.x ignores MySQL-5.7 specific code */
Примечание: комментарии, у которых номер версии находится в диапазоне 50700..99999 и которые используют синтаксис исполнимых комментариев для MariaDB, всё равно выполняются.
/*M!50701 MariaDB-10.x does not ignore this */
Разделители операторов не могут использоваться внутри исполнимых комментариев.
Примеры
В MySQL все следующие запросы вернут 2: в MariaDB последние 2 запроса вернут 3.
SELECT 2 /* +1 */; SELECT 1 /*! +1 */; SELECT 1 /*!50101 +1 */; SELECT 2 /*M! +1 */; SELECT 2 /*M!50301 +1 */;
Следующее исполнимое утверждение не будет работать из-за разделителя внутри исполняемой части:
/*M!100100 select 1 ; */ ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '' at line 1
Вместо этого, разделитель должен быть помещён вне исполняемой части:
/*M!100100 select 1 */; +---+ | 1 | +---+ | 1 | +---+
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/comment-syntax/