sql >> Database >  >> RDS >> PostgreSQL

pg_dump seriële datatype problemen

Van docs :

De gegevenstypen smallserial , serial en bigserial zijn geen echte typen, maar slechts een notatiegemak voor het maken van unieke identificatiekolommen (vergelijkbaar met de AUTO_INCREMENT-eigenschap die door sommige andere databases wordt ondersteund). In de huidige implementatie specificeert u:

CREATE TABLE tablename (
    colname SERIAL
);

is gelijk aan het specificeren van:

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;

We hebben dus een integer-kolom gemaakt en ervoor gezorgd dat de standaardwaarden worden toegewezen vanuit een reeksgenerator. Er wordt een beperking NOT NULL toegepast om ervoor te zorgen dat er geen null-waarde kan worden ingevoegd. (In de meeste gevallen zou u ook een UNIEKE of PRIMAIRE SLEUTEL-beperking willen toevoegen om te voorkomen dat dubbele waarden per ongeluk worden ingevoegd, maar dit is niet automatisch.) Ten slotte wordt de reeks gemarkeerd als "eigendom van" de kolom, zodat deze wordt verwijderd als de kolom of tabel wordt verwijderd.



  1. Hoe u ervoor kunt zorgen dat de externe sleutel van de onderliggende tabel dezelfde waarde heeft als de primaire auto-incrementsleutel van de ouder?

  2. Squeel-verzoek en Heroku, Postgres:fout bij gebruik van GROUP BY en ORDER

  3. Dynamische kolomnaam met behulp van voorbereide instructie + sql-query met variabele die 's . bevat

  4. Waarom zegt Postgres dat column niet bestaat?