INFORMATION_SCHEMA
Mit psql können Sie das Schema mit anzeigen \d information_schema.columns
oder es in den Dokumenten nachschlagen .
View "information_schema.columns"
Column | Type | Collation | Nullable | Default
--------------------------+------------------------------------+-----------+----------+---------
... stuff cropped..
is_nullable | information_schema.yes_or_no | | |
SQL Spec
Wenn information_schema.columns.is_nullable
wir in der Spezifikation nachschlagen, können wir sehen, dass es die Schuld der Spezifikation ist - wie es oft bei Sachen der Fall ist. Sie können nicht einfach 9.000 Jahre Vermächtnis löschen. Besonders mit etwas, das eine zuverlässige Schnittstelle bieten soll. Aus der SQL 2011-Spezifikation
IS_NULLABLE INFORMATION_SCHEMA.YES_OR_NO
CONSTRAINT COLUMNS_IS_NULLABLE_NOT_NULL NOT NULL,
Und Sie können die Definition von INFORMATION_SCHEMA.YES_OR_NO
definiert auch in der Spezifikation sehen,
CREATE DOMAIN YES_OR_NO AS
CHARACTER VARYING (3)
CHARACTER SET SQL_IDENTIFIER
CONSTRAINT YES_OR_NO_CHECK
CHECK (VALUE IN ( 'YES', 'NO' ) );
GRANT USAGE ON DOMAIN YES_OR_NO
TO PUBLIC WITH GRANT OPTION;
Der RDBM-spezifische Katalog von PostgreSQL
Wenn Sie die generische standardisierte Schnittstelle jedoch nicht benötigen, finden Sie in der Regel etwas Vernünftigeres pg_catalog
. In diesem Fall möchten Sie pg_catalog.pg_attribute
. Lass es uns überprüfen \d pg_catalog.pg_attribute
,
Table "pg_catalog.pg_attribute"
Column | Type | Collation | Nullable | Default
---------------+-----------+-----------+----------+---------
attnotnull | boolean | | not null |
Da ist dein Boolescher Wert.
PostgreSQL-Dokumente
In den PostgreSQL-Dokumenten zum Informationsschema: Datentypen wird dies auch tatsächlich behandelt.
Eine Zeichenfolgendomäne, die entweder JA oder NEIN enthält . Dies wird verwendet, um boolesche (wahr / falsch) Daten im Informationsschema darzustellen. (Das Informationsschema wurde erfunden, bevor der Typ boolean
zum SQL-Standard hinzugefügt wurde. Diese Konvention ist daher erforderlich, um das Informationsschema abwärtskompatibel zu halten.)