# Главная
# О библиотеке

# Выбор дистрибутива
преимущества Linux/UNIX | основные дистрибутивы | серверный Linux | BSD | LiveCDs | прочее

# Установка и удаление программ
общие вопросы | каталоги софта | специальные случаи

# Настройка и работа
установка, загрузчики | настройка Linux | консоль | файловые системы | процессы | шеллы, русификация, коммандеры | виртуальные машины, эмуляторы

# X Window и оконные менеджеры
настройка X Window | GNOME | KDE | IceWM и др.

# Работа с текстами
редакторы | офис | шрифты, кодировки и русификация | преобразования текстовых файлов | LaTeX, SGML и др. | словари

# Графика
GIMP | фото | обработка изображений | форматы графических файлов

# Сети, администрирование
общие вопросы | Dialup & PPP | брандмауэры | маршрутизация | работа в Windows-сетях | веб-серверы | Apache | прокси-серверы | сетевая печать | прочее

# Программирование
GCC & GNU make | программирование в UNIX | графические библиотеки | Tcl | Perl | PHP | Java & C# | СУБД | CVS | прочее

# Ядро
# Мультимедиа
# Интернет
# Почта
# Безопасность
# Железо
# Разное

# Linux HowTo (как сделать)
# Книги и руководства
# Материалы на английском языке


MySQL The World's Most Popular Open Source Database # Online shop | Site map |  
CompanyProductsSupport & ConsultingTraining & CertificationDownloadsDocumentation
  BooksArticlesMailing ListsPresentationsOther Sites  
Search the MySQL manual:
MySQL Manual
  • 1 Общая информация
    • 1.9 Насколько MySQL соответствует стандартам?
      • 1.9.4 Отличия MySQL от ANSI SQL92
        • 1.9.4.1 Вложенные SELECTы
        • 1.9.4.2 Оператор SELECT INTO TABLE
        • 1.9.4.3 Транзакции и атомарные операции
        • 1.9.4.4 Хранимые процедуры и триггеры
        • 1.9.4.5 Внешние ключи
        • 1.9.4.6 Представления
        • 1.9.4.7 Символы `--' как начало комментария

Buy this Reference Manual in softcover from Barnes & Noble!

MySQL Reference Manual
Previous / Next / Up / Table of Contents

1.9.4.7 Символы `--' как начало комментария

В некоторых отличных от MySQL базах данных SQL символы `--' используются как начальные символы комментариев. В сервере MySQL символом начала комментариев является `#'. Для сервера MySQL можно также использовать стиль комментирования из C: /* this is a comment */ (see section 6.1.5 Синтаксис комментариев).

В версии сервера MySQL 3.23.3 и выше поддерживается комментирование с помощью символов `--' - при условии, что за комментарием следует пробел. Это объясняется тем, что данный стиль комментирования вызвал много проблем при автоматической генерации SQL-запросов, в которых присутствовал код, подобный приведенному ниже (величина платежа вставляется в выражение !payment! автоматически):

UPDATE tbl_name SET credit=credit-!payment!

Давайте представим себе, что произойдет в случае, если величина payment окажется отрицательной. Поскольку выражение 1--1 в SQL является допустимым, то просто страшно себе вообразить последствия в случае, если будут разрешены комментарии, начинающиеся с `--',

Использование нашей реализации этого метода комментирования в версии сервера MySQL 3.23.3 и выше - в форме 1-- This is a comment - является действительно безопасным.

Существует еще один безопасный способ решения этой проблемы. Он заключается в том, что клиент командной строки mysql удаляет все строки, начинающиеся с `--'.

Приведенная ниже информация относится только к работе более ранних, чем 3.23.3, версий MySQL.

Если ваша SQL-программа представлена в виде текстового файла, содержащего комментарии `--', необходимо использовать:

shell> replace " --" " #" < text-file-with-funny-comments.sql \
	| mysql database

вместо обычного:

shell> mysql database < text-file-with-funny-comments.sql

Можно также отредактировать сам командный файл, заменив комментарии `--' комментариями `#':

shell> replace " --" " #" -- text-file-with-funny-comments.sql

Привести эти комментарии к первоначальному виду можно с помощью следующей команды:

shell> replace " #" " --" -- text-file-with-funny-comments.sql

User Comments

Posted by jt@plainblack.com on Tuesday October 8 2002, @9:57am[Delete] [Edit]

That's really funny considering mysqldump actually
creates files using the "--" syntax.

Posted by reaganpr@hotmail.com on Tuesday January 28 2003, @7:57am[Delete] [Edit]

I used mysqldump to make a dump of a single database on server version 3.23.52 and was unable to import that data on a 3.23.43 server. Although this manual entry states that server versions > 3.23.3 recognize the new '--', I discovered that this particular server version chokes on lines that consist of just dashes ('-').

I also couldn't get the 'replace' example to work on my system until I did:

shell> replace "\^--" "#" -- my-file.sql

Which will replace only lines that start with '--'. I hope this helps someone with a similar problem.
p.

Add your own comment.

Top / Previous / Next / Up / Table of Contents
# MySQL.com home | Site map | Contact us | Press | Jobs | Privacy policy | Trademark info | © 1995-2003 MySQL AB. All rights reserved.