sql >> Database >  >> RDS >> PostgreSQL

Postgresql wijzig kolomtype van int in UUID

Je kunt niet zomaar een int4 casten naar uuid; het zou een ongeldige uuid zijn, met slechts 32 bits ingesteld, waarbij de hoge 96 bits nul zijn.

Als u nieuwe UUID's wilt genereren om de gehele getallen te vervangen, en als er geen bestaande refererende sleutelverwijzingen naar die gehele getallen zijn, kunt u een nepcast gebruiken die daadwerkelijk nieuwe waarden genereert.

Voer dit niet uit zonder een back-up van uw gegevens. Het gooit permanent de oude waarden weg in colA .

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

Een betere benadering is meestal om toe te voegen een uuid-kolom, corrigeer vervolgens eventuele externe sleutelreferenties om ernaar te verwijzen en laat ten slotte de originele kolom vallen.

U moet de UUID-module geïnstalleerd hebben:

CREATE EXTENSION "uuid-ossp";

De aanhalingstekens zijn belangrijk.



  1. SQLSTATE[42000]:Syntaxisfout of toegangsfout:1064 U heeft een fout in uw SQL-syntaxis — PHP — PDO

  2. Hoe de datum van gisteren in SQLite te krijgen

  3. SSIS Bronformaat Impliciete conversie voor Datetime

  4. Wat is MySQL Workbench?