check という列名と CHECK 制約の見分け

列名が check の列と、CHECK ( ) で始まる表の制約を見分ける例です。括弧が続く場合だけを制約とし、check int は列名として扱って予約語と判定します。

入力

CREATE TABLE 文または列名の一覧

CREATE TABLE t (
  check int,
  CHECK (check > 0)
);

入力の種類

CREATE TABLE 文(列の名前を読み取る)

結果

エラー 1 件・警告 0 件・情報 0 件

指摘(エラー・警告・情報)

  • エラー 表 t・2 行目 「check」は PostgreSQL の予約語で、引用符なしでは列名にできません。"check" のように二重引用符で囲むか、別の名前に変えてください(付録 C)。囲んだ場合は、その列を使う SQL でも毎回同じ引用符が必要です。
読んだ表1 個
検査した名前1 個
引用符なしで使えない名前1 個

列名ごとの判定

列名ごとの判定
番号表列名(入力どおり)区分引用符なしで列名にできるか
1tcheck予約語できない

検算(この結果になる理由)

1 つ目の項目は check の後ろが型の int なので列名で、CHECK は予約語のためエラー 1 件です。2 つ目は CHECK の後ろが括弧なので表の制約として読み飛ばし、列は 1 つだけになります。

判定の根拠は仕様と根拠に、仕様の出典とともにまとめています。自分の入力で試すにはツールをお使いください。

このツールの制約

ご利用にあたって

  • この判定は PostgreSQL の予約語だけを対象にしています。複数のデータベースで使う SQL では、それぞれの製品の予約語も確認してください。
  • SQL の中身(表名・列名)に機密情報が含まれる場合も、入力はブラウザの外に出ません。結果をコピーして共有する際の取り扱いにはご注意ください。

ほかの入力例