Donnerstag, 26. Mai 2011

ALTER TABLE ADD COLUMN IF EXISTS (Postgres)

Manchmal möchte man eine Spalte in Abhängigkeit von deren Existenz hinzufügen. Da man ALTER TABLE ADD COLUMN IF EXISTS nicht direkt auf eine Postgres Table ausführen kann, ist nachfolgend ein kleiner workaround definiert, der sogar die mögliche Existenz von Tabellen in  mehreren DB Schema berücksichtigt.


SELECT 'ALTER TABLE '||tablename||' ADD COLUMN my_new_column integer' AS update_stmt
FROM pg_tables
WHERE tablename = 'my_table_name' 
AND tablename NOT IN (
 SELECT table_name 
 FROM information_schema.columns
 WHERE table_catalog = 'my_catalog'
 AND table_schema = 'my_schema'
 AND table_name = 'my_table_name' 
 AND column_name = 'my_new_column'

Keine Kommentare:

Kommentar veröffentlichen