こんにちは私はpostgreSQLで期待どおりに制約が機能していないようです。pgadmin内から、次のSQLクエリを実行します。
-- Check: "TypeCheck"
-- ALTER TABLE "ComLog" DROP CONSTRAINT "TypeCheck";
ALTER TABLE "ComLog"
ADD CONSTRAINT "TypeCheck" CHECK ("Type" SIMILAR TO 'email|post|IRL|minutes');
COMMENT ON CONSTRAINT "TypeCheck" ON "ComLog" IS 'One of email|post|IRL|minutes';
実行するとこれに変換されます。
-- Check: "TypeCheck"
-- ALTER TABLE "ComLog" DROP CONSTRAINT "TypeCheck";
ALTER TABLE "ComLog"
ADD CONSTRAINT "TypeCheck" CHECK ("Type" ~ similar_escape('email|post|IRL|minutes'::text, NULL::text));
COMMENT ON CONSTRAINT "TypeCheck" ON "ComLog" IS 'One of email|post|IRL|minutes';
これにより、[タイプ]列への入力が、電子メールポストIRLまたは分に制限されると期待しています。ただし、テーブルデータを入力すると、これらのタイプの1つを入力すると、この制約が失敗します。タイプ列は文字タイプです。誰でもこれを修正する方法を知っていますか?ありがとう。
CHECK (type in ('email','post','IRL','minutes')
か?