KEY、REFERENCESなどの制約を設定できます。(condition)のように書け、conditionがtrueなデータだけ登録するように制限できます。以下は、numberへは1以上の値しか入れれないという制限を設定してます。その条件を満たさないものを入れようとするとエラーが起こります。"example_check_number_check"エラー文にある通りこの制約名はデフォルトで<table_name>_<column_name>_checkです。UNIQUE単にUNIEUQを置いて設定します。これを設定したカラムの値は全レコード全てで異なる値でなければなれないという制限ができます。以下は、numberへ1を2回入れようとしたためエラーが起きています。"example_unique_number_key"エラー文にある通りこの制約名はデフォルトで<table_name>_<column_name>_keyです。KEY単にUNIEUQを置いて設定します。そのテーブルでの主キーを設定できます。こちらもユニークと同じようにユニークである必要があります。"example_primary_key_pkey"エラー文にある通りこの制約名はデフォルトで<table_name>_pkeyです。...)のように書き、外部テーブルとの関連した値を安全に記録する為に使います。制約名はデフォルトで<table_name>_<column_name>_fkeyです。例を見る前に以下で、外部テーブルとして使うテーブルを作っておきます。KEY);それを使うテーブルを以下のように作ります。example_references_parent(id));まだexample_references_parentにはレコードは1つもありません。"example_references1_parent_id_fkey"エラーになります。これはparent_idへ入れられる値は、example_references_parentに実在するあるid値である必要がある為です。このエラーは先にそのような値を入れておくことで回避できます。1参照テーブルにidが1のレコードを入れたので、先程エラーになったものをもう1度試してみます。1今度は大丈夫でした!そしてこの状態で参照側のレコードを消してみます。"example_references1"が、この制約がちゃんと付いてると参照されているレコードは上記のようなエラーがでて消すことができなくなります。これを回避するには先に参照しているレコードを消す必要があります。1もし、参照してる値がとても多い場合これでは不便かもしれません。上記の削除の動作を1度に行える方法があります。CASCADEを付けます。TABLE先程消してしまった参照テーブルと今作ったテーブルに値を入れておきます。1この状態だと参照元データを削除できます。CASCADEによって、参照元が削除された時にそれを参照しているレコードも削除するように設定した為です。CASCADEも一緒に設定してました。これは参照元の値が更新された時に、それを参照しているレコードの値も更新されます。(例えば親がid:1で子がparent_id:1の時、id:2へ更新すると連藤してparent_id:2に更新される)。