PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Probleme mit dem seriellen pg_dump-Datentyp

Aus docs :

Die Datentypen smallserial , serial und bigserial sind keine echten Typen, sondern lediglich eine Notationshilfe zum Erstellen eindeutiger Bezeichnerspalten (ähnlich der AUTO_INCREMENT-Eigenschaft, die von einigen anderen Datenbanken unterstützt wird). In der aktuellen Implementierung wird angegeben:

CREATE TABLE tablename (
    colname SERIAL
);

entspricht der Angabe von:

CREATE SEQUENCE tablename_colname_seq;
CREATE TABLE tablename (
    colname integer NOT NULL DEFAULT nextval('tablename_colname_seq')
);
ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;

Daher haben wir eine ganzzahlige Spalte erstellt und dafür gesorgt, dass ihre Standardwerte von einem Sequenzgenerator zugewiesen werden. Eine NOT NULL-Einschränkung wird angewendet, um sicherzustellen, dass kein Nullwert eingefügt werden kann. (In den meisten Fällen möchten Sie auch eine UNIQUE- oder PRIMARY KEY-Einschränkung anfügen, um zu verhindern, dass versehentlich doppelte Werte eingefügt werden, aber dies geschieht nicht automatisch.) Schließlich wird die Sequenz als „im Besitz“ der Spalte markiert, sodass sie wird gelöscht, wenn die Spalte oder Tabelle gelöscht wird.