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

Postgresql ändert den Spaltentyp von int zu UUID

Sie können nicht einfach ein int4 in uuid umwandeln; Es wäre eine ungültige UUID, bei der nur 32 Bits gesetzt sind und die hohen 96 Bits Null sind.

Wenn Sie neue UUIDs generieren möchten, um die Ganzzahlen vollständig zu ersetzen, und wenn es keine vorhandenen Fremdschlüsselverweise auf diese Ganzzahlen gibt, können Sie eine gefälschte Umwandlung verwenden, die tatsächlich neue Werte generiert.

Führen Sie dies nicht aus ohne Sicherung Ihrer Daten. Es verwirft dauerhaft die alten Werte in colA .

ALTER TABLE tableA ALTER COLUMN colA SET DATA TYPE UUID USING (uuid_generate_v4());

Ein besserer Ansatz ist normalerweise das Hinzufügen eine UUID-Spalte, korrigieren Sie dann alle Fremdschlüsselverweise so, dass sie darauf zeigen, und löschen Sie schließlich die ursprüngliche Spalte.

Sie müssen das UUID-Modul installiert haben:

CREATE EXTENSION "uuid-ossp";

Die Anführungszeichen sind wichtig.