update type modify foreign ejemplo drop constraint column sql oracle alter-table

sql - type - Alterar la tabla para modificar el valor predeterminado de la columna



alter table oracle modify column type (4)

Para Sql Azure funciona la siguiente consulta:

ALTER TABLE [TableName] ADD DEFAULT ''DefaultValue'' FOR ColumnName GO

Tengo un requisito donde necesitamos modificar el valor predeterminado de una columna en la tabla de la base de datos. La tabla ya es una tabla existente en la base de datos y actualmente el valor predeterminado de la columna es NULL. Ahora, si agrega un nuevo valor predeterminado a esta columna, si estoy en lo correcto, actualiza todos los NULL existentes de la columna a un nuevo valor predeterminado. ¿Hay alguna manera de no hacer esto pero aún así establecer un nuevo valor predeterminado en la columna? Quiero decir que no quiero que los NULL existentes se actualicen y quiero que permanezcan como NULL.

Cualquier ayuda en esto es apreciada. Gracias


Siguiendo el ejemplo de Justin, el siguiente comando funciona en Postgres:

alter table foo alter column col2 set default ''bar'';


Tu creencia acerca de lo que sucederá no es correcta. Establecer un valor predeterminado para una columna no afectará los datos existentes en la tabla.

Creo una tabla con una columna col2 que no tiene un valor predeterminado

SQL> create table foo( 2 col1 number primary key, 3 col2 varchar2(10) 4 ); Table created. SQL> insert into foo( col1 ) values (1); 1 row created. SQL> insert into foo( col1 ) values (2); 1 row created. SQL> insert into foo( col1 ) values (3); 1 row created. SQL> select * from foo; COL1 COL2 ---------- ---------- 1 2 3

Si luego modifico la tabla para establecer un valor predeterminado, nada de las filas existentes cambiará

SQL> alter table foo 2 modify( col2 varchar2(10) default ''foo'' ); Table altered. SQL> select * from foo; COL1 COL2 ---------- ---------- 1 2 3 SQL> insert into foo( col1 ) values (4); 1 row created. SQL> select * from foo; COL1 COL2 ---------- ---------- 1 2 3 4 foo

Incluso si posteriormente vuelvo a cambiar el valor predeterminado, no habrá ningún cambio en las filas existentes

SQL> alter table foo 2 modify( col2 varchar2(10) default ''bar'' ); Table altered. SQL> select * from foo; COL1 COL2 ---------- ---------- 1 2 3 4 foo SQL> insert into foo( col1 ) values (5); 1 row created. SQL> select * from foo; COL1 COL2 ---------- ---------- 1 2 3 4 foo 5 bar


ALTER TABLE {TABLE NAME} ALTER COLUMN {COLUMN NAME} SET DEFAULT ''{DEFAULT VALUES}''

ejemplo:

ALTER TABLE RESULT ALTER COLUMN STATUS SET DEFAULT ''FAIL''