2012-08-13 9 views

Odpowiedz

158
ALTER TABLE users 
    ADD COLUMN "priv_user" BOOLEAN DEFAULT FALSE; 

można również bezpośrednio określić NOT NULL

ALTER TABLE users 
    ADD COLUMN "priv_user" BOOLEAN NOT NULL DEFAULT FALSE; 

Jak Craig wspomniano na wypełnionych tabel Jest bardziej wydajny podzielić ją na kroki:

ALTER TABLE users ADD COLUMN priv_user BOOLEAN; 
UPDATE users SET priv_user = 'f'; 
ALTER TABLE users ALTER COLUMN priv_user SET NOT NULL; 
ALTER TABLE users ALTER COLUMN priv_user SET DEFAULT FALSE; 
+17

Pamiętaj, że jeśli Twój stół jest duży, może to zająć dużo czasu i zablokować tabelę przez cały czas. Szybciej jest podzielić go na kroki: dodaj kolumnę bez wartości domyślnej za pomocą 'ALTER TABLE users ADD COLUMN private_user BOOLEAN;', następnie 'UPDATE users SET priv_user = 'f';' i wreszcie, jeśli potrzebujesz 'ALTER TABLE users ALTER COLUMN priv_user SET NOT NULL; '. –

+0

Podejście podzielone na etapy nie dodaje wartości domyślnej. Czy jest jeszcze szybciej dodać "DEFAULT" f "" w oddzielnym kroku? –

+0

Tak, dodawanie wartości domyślnej w oddzielnym kroku jest tylko operacją z metadanymi i dlatego jest bardzo szybkie. – Eelke

13

Jeśli chcesz rzeczywistą kolumnę logiczną:

ALTER TABLE users ADD "priv_user" boolean DEFAULT false; 
+0

Uwaga: nie wszystkie wersje Postgresa obsługują tę definicję w jednym wierszu. –

5

I Jeśli używasz postgresql to musisz użyć typu BOOLEAN jako małe litery jako boolean.

Użytkownicy ALTER TABLE DODAJ "priv_user" boolean DEFAULT false;

8

Tak na przyszłość, jeśli już mieć kolumnę logiczną i chcesz po prostu dodać domyślne zrobić:

ALTER TABLE users 
    ALTER COLUMN priv_user SET DEFAULT false; 
1

W psql zmiany składni kwerendy kolumna jak ten

Alter table users add column priv_user boolean default false ; 

wartość boolowska (true-false) zapisać w DB jak (tf) wartości.

Powiązane problemy