serial
ist ein Pseudo Datentyp, kein tatsächlicher Datentyp. Es ist eine integer
darunter mit einigen zusätzlichen DDL-Befehlen, die automatisch ausgeführt werden:
- Erstellen Sie eine Sequenz (standardmäßig mit übereinstimmendem Namen).
- Setzen Sie die Spalte
NOT NULL
und die Vorgabe, aus dieser Sequenz zu zeichnen. - Machen Sie die Spalte "Eigentümer" der Sequenz.
Einzelheiten:
- Tabellen sicher und sauber umbenennen, die serielle Primärschlüsselspalten in Postgres verwenden?
Eine bigserial
ist dasselbe, aufgebaut um einen bigint
Säule. Sie wollen bigint
, aber das hast du schon erreicht. Um eine bestehende serial
umzuwandeln Spalte in eine bigserial
(oder smallserial
), alles, was Sie tun müssen, ist ALTER
der Datentyp der Spalte. Sequenzen basieren im Allgemeinen auf bigint
, sodass dieselbe Sequenz für jede integer
verwendet werden kann Typ.
Um einen bigint
zu "ändern". in eine bigserial
oder eine integer
in eine serial
, den Rest müssen Sie nur noch von Hand erledigen:
- Erstellen einer PostgreSQL-Sequenz für ein Feld (das nicht die ID des Datensatzes ist)
Der eigentliche Datentyp ist immer noch integer
/ bigint
. Einige Clients wie pgAdmin zeigen den Datentyp serial
an in der zurückentwickelten CREATE TABLE
Skript, wenn alle Kriterien für eine serial
erfüllt sind erfüllt sind.