Hallo, ich kann nicht scheinen, dass eine Einschränkung so funktioniert, wie ich es in postgreSQL erwarte. Innerhalb von pgadmin führe ich die folgende SQL-Abfrage aus.
-- 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';
Bei der Ausführung wird dies in konvertiert.
-- 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';
Ich erwarte, dass dies meine Eingabe für die Spalte "Typen" auf eine der E-Mail-Post-IRL oder Minuten beschränkt. Bei der Eingabe von Tabellendaten schlägt diese Einschränkung jedoch fehl, wenn ich einen dieser Typen eingebe. Die Spalte Typen ist vom Typ Zeichen. Weiß jemand, wie man das behebt? Vielen Dank.
postgresql
constraint
wookie1
quelle
quelle
CHECK (type in ('email','post','IRL','minutes')
?Antworten:
Ändern Sie Ihre Einschränkung in
Dies wird vom Parser konvertiert in:
Das sollte tun, was Sie suchen.
Ich muss mich jedoch fragen, ob es nicht besser wäre, dies zu tun:
Fügen Sie dann einen Fremdschlüssel hinzu, um die Einschränkung zu erzwingen. Dies würde es in Zukunft einfacher machen, Typen hinzuzufügen.
quelle