私はpostgreSQLを使用しています。次のような列があります。
NOT NULL
ただし、次のように空の文字列を含む行を挿入したい場合:
''
エラーは発生せず、受け入れます。挿入値を確認するにはどうすればよいnot emptyですか? (空でもヌルでもない)
PS:私の列は次のように定義されています:
"ads" character varying(60) NOT NULL
私はpostgreSQLを使用しています。次のような列があります。
NOT NULL
ただし、次のように空の文字列を含む行を挿入したい場合:
''
エラーは発生せず、受け入れます。挿入値を確認するにはどうすればよいnot emptyですか? (空でもヌルでもない)
PS:私の列は次のように定義されています:
"ads" character varying(60) NOT NULL
列定義に制約を追加します。たとえば、次のようなものです。
ads character varying(60) NOT NULL CHECK (ads <> '')
詳細については、http://www.postgresql.org/docs/current/static/ddl-constraints.htmlを参照してください。
postgreSQLの現在のドキュメントにある次のようにして、目的を達成できます。
CREATE TABLE distributors (
did integer PRIMARY KEY DEFAULT nextval('serial'),
name varchar(40) NOT NULL CHECK (name <> '')
);
ドキュメントから:
CHECK ( expression )CHECK 句は、挿入操作または更新操作が成功するために、新しい行または更新された行が満たさなければならないブール結果を生成する式を指定します。TRUE または UNKNOWN と評価される式は成功します。挿入または更新操作のいずれかの行が FALSE の結果を生成すると、エラー例外が発生し、挿入または更新はデータベースを変更しません。列制約として指定されたチェック制約は、その列の値のみを参照する必要がありますが、テーブル制約に表示される式は複数の列を参照できます。
現在、CHECK 式にサブクエリを含めることも、現在の行の列以外の変数を参照することもできません。