2012-08-13 52 views

Respuesta

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

También puede especificar directamente NO NULO

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

Como Craig menciona en las mesas de relleno es más eficiente que dividirlo en pasos:

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

Tenga en cuenta que si su tabla es grande, esto puede llevar mucho tiempo y bloquear la mesa durante todo el tiempo. Es más rápido dividirlo en pasos: agregue la columna sin un valor predeterminado con 'ALTER TABLE users ADD COLUMN priv_user BOOLEAN;', luego 'UPDATE users SET priv_user = 'f';' y finalmente si necesita 'ALTER TABLE users ALTER COLUMN priv_user SET NOT NULL; '. –

+0

El enfoque que se divide en pasos no agrega un valor predeterminado. ¿Es aún más rápido agregar un "DEFAULT 'f'" en un paso separado? –

+0

Sí, agregar el valor predeterminado en un paso separado es solo una operación de metadatos y, por lo tanto, muy rápido. – Eelke

13

Si desea una columna booleana real:

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

Nota: no todas las versiones de Postgres admiten que esto se defina en una línea. –

5

I Si está usando postgresql, entonces tiene que usar el tipo de columna BOOLEAN en minúsculas como booleano.

ALTER TABLE usuarios AGREGAR "priv_user" booleano DEFAULT false;

8

Sólo para referencia futura, si ya tienen una columna booleana y lo que desea añadir un defecto hacer:

ALTER TABLE users 
    ALTER COLUMN priv_user SET DEFAULT false; 
1

En psql alterar la sintaxis de consulta de columna como ésta

Alter table users add column priv_user boolean default false ; 

valor booleano (verdadero-falso) guardar en DB como (tf) valor.

Cuestiones relacionadas