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''