2012-08-13 14 views

risposta

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

è anche possibile specificare direttamente NOT NULL

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

Come Craig citato su tavoli pieni è più efficiente di dividerlo in passaggi:

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

Nota che se la tua tabella è grande questo può richiedere molto tempo e bloccare la tabella per tutto il tempo. È più veloce dividerlo in passi: aggiungere la colonna senza un valore predefinito con 'ALTER TABLE users ADD COLUMN priv_user BOOLEAN;', quindi 'UPDATE users SET priv_user = 'f';' e infine se è necessario 'ALTER TABLE users ALTER COLUMN priv_user SET NOT NULL; '. –

+0

L'approccio suddiviso in passaggi non aggiunge un valore predefinito. È ancora più veloce aggiungere un "DEFAULT" f "" in un passaggio separato? –

+0

Sì, aggiungere il valore predefinito in un passo separato è solo un'operazione di metadati e quindi molto veloce. – Eelke

13

Se si desidera una colonna booleana attuale:

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

Nota: non tutte le versioni di Postgres supportano questa definizione in una riga. –

5

I f stai usando postgresql quindi devi usare il tipo di colonna BOOLEAN in lettere minuscole come booleano.

ALTER TABLE users AGGIUNGI "priv_user" booleano DEFAULT falso;

8

Solo per riferimento futuro, se si già hanno una colonna booleana e si desidera solo aggiungere un default fare:

ALTER TABLE users 
    ALTER COLUMN priv_user SET DEFAULT false; 
1

In psql alterare la sintassi di query colonna come questo

Alter table users add column priv_user boolean default false ; 

valore booleano (true-false) salvato in DB come (tf) valore.

Problemi correlati