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

Wie konvertiere ich den Primärschlüssel von Integer in Serial?

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:

  1. Erstellen Sie eine Sequenz (standardmäßig mit übereinstimmendem Namen).
  2. Setzen Sie die Spalte NOT NULL und die Vorgabe, aus dieser Sequenz zu zeichnen.
  3. 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.