Documentation Home
MySQL 5.6 リファレンスマニュアル
Download this Manual
EPUB - 7.5Mb
HTML Download (TGZ) - 7.2Mb
HTML Download (Zip) - 7.2Mb


MySQL 5.6 リファレンスマニュアル  /  ...  /  コメントの先頭としての「--」

1.8.2.5 コメントの先頭としての「--」

標準 SQL では、コメントに C 構文 /* this is a comment */ が使用され、MySQL Server でも同様にこの構文がサポートされています。セクション9.6「コメントの構文」で説明するように、MySQL は、MySQL 固有の SQL をコメントに埋め込めるようにする、この構文の拡張機能もサポートします。

標準 SQL では、-- をコメント開始連続文字として使用します。MySQL Server では、# をコメント開始文字として使用します。MySQL Server 3.23.3 以上では、-- コメントスタイルのバリアントもサポートします。つまり、-- コメント開始連続文字には空白 (または改行などの制御文字) を続ける必要があります。この空白は、payment の値を自動的に挿入する次のような構造構文を使用した自動生成の SQL クエリーでの問題を防止するために必要です。

UPDATE account SET credit=credit-payment

payment の値が負数 (-1など) の場合、どうなるかを考えてみてください。

UPDATE account SET credit=credit--1

credit--1 は SQL では有効な式ですが、-- はコメントの先頭として解釈され、式の一部は破棄されます。結果として、意図したものとはまったく異なる意味を持つステートメントとなってしまいます。

UPDATE account SET credit=credit

このステートメントでは、値が変更されることは一切ありません。これは、コメントを -- で開始できるようにすると、深刻な結果を招く可能性があること示します。

実装を使用するには、-- が MySQL Server 3.23.3 以降でのコメント開始連続文字として認識されるように、これに空白を続けることが必要になります。したがって、credit--1 は安全に使用できます。

別の安全な機能は、mysql コマンド行クライアントで -- で始まる行を無視するというものです。

次の情報は、3.23.3 より前のバージョンの MySQL を実行している場合にのみ関連します。

テキストファイルに--コメントを含む SQL スクリプトがある場合は、スクリプトを実行する前に、次のように replace ユーティリティーを使用して#文字を使用するようにコメントを変換してください。

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

これは通常の方法でスクリプトを実行するよりも安全です。

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

所定の場所のスクリプトファイルを編集して、--コメントを#コメントに変更することもできます。

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

次のコマンドで元に戻してください。

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

セクション4.8.2「replace — 文字列置換ユーティリティー」を参照してください。


User Comments
Sign Up Login You must be logged in to post a comment.