sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql změňte typ sloupce z int na UUID

Nemůžete jen přetypovat int4 do uuid; bylo by to neplatný uuid s nastavenými pouze 32 bity, přičemž vysokých 96 bitů je nula.

Pokud chcete vygenerovat nové UUID, které zcela nahradí celá čísla, a pokud na tato celá čísla neexistují žádné odkazy na cizí klíč, můžete použít falešné přetypování, které ve skutečnosti generuje nové hodnoty.

Toto nespouštět bez zálohování vašich dat. Trvale zahodí staré hodnoty v colA .

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

Lepší přístup je obvykle přidat sloupec uuid, pak opravte všechny odkazy na cizí klíč, aby na něj ukazovaly, a nakonec původní sloupec vypusťte.

Musíte mít nainstalovaný modul UUID:

CREATE EXTENSION "uuid-ossp";

Důležité jsou uvozovky.



  1. Pochopení znakových sad a řazení v MySQL

  2. Příklady MAKEDATE() – MySQL

  3. Jak funguje SQLite Length()

  4. Co se stane s ID primárního klíče, když překročí limit?