sql >> Database teknologi >  >> RDS >> PostgreSQL

Postgresql ændre kolonnetype fra int til UUID

Du kan ikke bare caste en int4 til uuid; det ville være en ugyldig uuid, med kun 32 bit sat, de høje 96 bit er nul.

Hvis du vil generere nye UUID'er for at erstatte heltalene helt, og hvis der ikke er nogen eksisterende fremmednøglereferencer til disse heltal, kan du bruge en falsk cast, der rent faktisk genererer nye værdier.

Kør ikke dette uden backup af dine data. Det kasserer permanent de gamle værdier i colA .

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

En bedre tilgang er normalt at tilføje en uuid-kolonne, ret så eventuelle fremmednøglereferencer for at pege på den, og slip til sidst den originale kolonne.

Du skal have UUID-modulet installeret:

CREATE EXTENSION "uuid-ossp";

Citaterne er vigtige.



  1. SQL Server Internals:Plan Caching Pt. II – Genkompilering af planer

  2. Henter java.sql.SQLEundtagelse:Betjening er ikke tilladt efter ResultSet lukket

  3. Hvordan forbinder man to tabeller mysql?

  4. Oracle fejlhåndtering