Tengo una tabla que tiene varias columnas enteras anulables. Esto no es deseable por varias razones, por lo que estoy buscando actualizar todos los valores nulos a 0 y luego establecer estas columnas en NOT NULL
. Además de cambiar los valores nulos a 0
, los datos deben conservarse.
Estoy buscando la sintaxis SQL específica para modificar una columna (llamarla ColumnA
) a " not null
". Suponga que los datos se han actualizado para no contener nulos.
Usando SQL Server 2000 .
sql-server
tsql
null
alter-table
alter-column
Codificador kármico
fuente
fuente
NOT NULL
puede causar muchos registros.Respuestas:
Primero, haga
NULL
desaparecer todos los valores actuales :Luego, actualice la definición de la tabla para no permitir "NULL":
fuente
Tuve el mismo problema, pero el campo solía ser nulo por defecto, y ahora quiero tenerlo por defecto en 0. Eso requería agregar una línea más después de la solución de mdb:
fuente
Tendrás que hacerlo en dos pasos:
fuente
Para Oracle 11g, pude cambiar el atributo de columna de la siguiente manera:
De lo contrario, la respuesta de abatichev parecía buena. No puede repetir la modificación: se queja (al menos en SQL Developer) de que la columna ya no es nula.
fuente
datatype
. Simplementecolumname NOT NULL
es suficiente. Ver la documentación .esto funcionó para mí:
fuente
Mientras la columna no sea un identificador único
Entonces
Modifique la tabla y establezca el campo en no nulo y especifique un valor predeterminado de 0
fuente
Esto parece más simple, pero solo funciona en Oracle:
Además, con esto, también puede agregar columnas, no solo alterarlo. Se actualiza al valor predeterminado (0) en este ejemplo, si el valor era nulo.
fuente
En caso de
FOREIGN KEY CONSTRAINT
... habrá un problema si '0' no está presente en la columna de la tabla de Clave primaria. La solución para eso es ...PASO 1:
Deshabilite todas las restricciones usando este código:
PASO 2:
PASO 3:
Habilite todas las restricciones usando este código:
fuente
En mi caso tuve dificultades con las respuestas publicadas. Terminé usando lo siguiente:
Cambie
VARCHAR(200)
a su tipo de datos y, opcionalmente, cambie el valor predeterminado.Si no tiene un valor predeterminado, tendrá un problema para realizar este cambio, ya que el valor predeterminado sería nulo creando un conflicto.
fuente
Tomemos un ejemplo:
Y quiero cambiar la columna
EMPLOYEE_NAME
aNOT NULL
. Esta consulta se puede usar para la tarea:fuente
Para el JavaDB incorporado incluido en el JDK (distribución admitida por Oracle del Apache Derby), lo siguiente funcionó para mí
fuente
Hacer que la columna no sea nula y agregar valores predeterminados también se puede hacer en la GUI de SSMS.
UPDATE myTable SET myColumn = 0
fuente
Puede cambiar la definición de la columna DB existente usando el siguiente sql.
fuente