Tengo una base de datos con Tengo muchas columnas de tipo de bit. Después de agregar otras columnas, necesito que todas las columnas antiguas tengan valores "falsos" predeterminados.¿Cómo cambiar todos los valores NULL de columna de tipo de bit a falso en todas las bases de datos en MSSQL?
Respuesta
Para actualizar cada columna de edad a 0, puede utilizar esta consulta (sobre una base de la columna por columna):
UPDATE MyTable
SET OldCol1 = 0
WHERE OldCol1 IS NULL
Entonces, si usted quiere cualquier valores futuros a tener un valor predeterminado de 0 como así, utilice esto:
ALTER TABLE MyTable
ALTER COLUMN OldCol1 bit NOT NULL
ALTER TABLE MyTable
ADD CONSTRAINT OldCol1ShouldBeFalse DEFAULT 0 FOR OldCol1
Ahora, usted tiene que ejecutar esto en contra de cada columna de edad, así que espero que usted no tiene demasiados.
Este SQL dinámico anidado logrará el trabajo si no desea hacer esto uno por uno. Tenga en cuenta que no hace ninguna comprobación primero para validar que la columna ya no tiene una restricción predeterminada (que es posible, incluso si la columna es anulable), pero la secuencia de comandos podría aumentarse para hacerlo (e incluso para descartar) tal restricción en caso de que sea por defecto 1).
DECLARE @sql NVARCHAR(MAX);
SET @sql = N'DECLARE @sql NVARCHAR(MAX); SET @sql = N'''';';
SELECT @sql = @sql + N'
SELECT @sql = @sql + N''UPDATE ' + QUOTENAME(name)
+ '.'' + QUOTENAME(s.name) + ''.'' + QUOTENAME(t.name) + ''
SET '' + QUOTENAME(c.name) + '' = 0
WHERE '' + QUOTENAME(c.name) + '' IS NULL;
ALTER TABLE ' + QUOTENAME(name) + '.'' + QUOTENAME(s.name)
+ ''.'' + QUOTENAME(t.name)
+ '' ADD CONSTRAINT '' + c.name + ''_FalseByDefault
DEFAULT (0) FOR '' + QUOTENAME(c.name) + '';
ALTER TABLE ' + QUOTENAME(name) + '.'' + QUOTENAME(s.name)
+ ''.'' + QUOTENAME(t.name)
+ '' ALTER COLUMN '' + QUOTENAME(c.name) + '' BIT NOT NULL;
''
FROM ' + QUOTENAME(name) + '.sys.columns AS c
INNER JOIN ' + QUOTENAME(name) + '.sys.tables AS t
ON c.[object_id] = t.[object_id]
INNER JOIN ' + QUOTENAME(name) + '.sys.schemas AS s
ON t.[schema_id] = s.[schema_id]
WHERE c.system_type_id = 104 AND c.is_nullable = 1
AND t.is_ms_shipped = 0;'
FROM sys.databases WHERE database_id > 4;
SET @sql = @sql + 'PRINT @sql;
--EXEC sp_executesql @sql;';
EXEC sp_executesql @sql;
Es muy feo a la vista, y el comando PRINT
no será necesariamente completa debido a las limitaciones de salida en Management Studio. Pero una vez que esté seguro de que los primeros comandos parecen correctos, puede comentarlos y descomentar la segunda línea y ejecutar el script nuevamente para realizar los cambios. El GO está ahí porque algunos pueden fallar. Es posible que desee agregar resultados de impresión para cada combinación de db/tabla/columna, de modo que pueda imprimir mensajes de estado para correlacionar más fácilmente cualquier posible error con el db/tabla/columna real.
- 1. pandas: cómo cambiar todos los valores de una columna?
- 2. ¿Cómo borrar todas las bases de datos en Postgres?
- 3. Cambiar valores al convertir el tipo de columna a numérico
- 4. Cómo otorgar a los usuarios acceso de solo lectura a todas las bases de datos
- 5. Cómo mostrar todas las tablas de múltiples bases de datos
- 6. MongoDB soltar todas las bases de datos
- 7. En mysql, las bases de datos show; el comando no enumera todas mis bases de datos
- 8. Cómo cambiar todas las apariciones de una palabra en todos los archivos en un directorio
- 9. Equivalente a MSSQL IDENTITY Columna en MySQL
- 10. atributos multivalor en las bases de datos
- 11. Cambiar el tipo de datos de una columna en Oracle
- 12. Mysql - encuentre una tabla en todas las bases de datos
- 13. Cómo cambiar el tipo de datos de una columna de datos en una tabla de datos?
- 14. ¿Pueden los paréntesis en C cambiar el tipo de resultado de los operandos de una operación bit a bit?
- 15. Cómo cambiar todas las columnas Sql de un tipo de datos en otro
- 16. ¿Cómo comprime el servidor SQL los tipos de datos de bit NULL?
- 17. SQL: elimine todos los datos de todas las tablas disponibles
- 18. Cómo exportar todas las bases de datos con phpmyadmin
- 19. ¿Dónde están todas las bases de datos nativas revisadas?
- 20. MongoDB: ¿Obtener la lista de todas las bases de datos?
- 21. ¿Están las bases de datos orientadas a documentos destinadas a reemplazar las bases de datos relacionales?
- 22. ¿Cómo puedo cambiar los prefijos en todas las tablas de mi base de datos MySQL?
- 23. Tipo de devolución de operadores bit a bit en C++
- 24. Búsqueda de procedimientos/funciones almacenados en todas las bases de datos
- 25. Parámetros NULL en UDF escalares en MSSQL
- 26. Tipo de datos de tamaño de bit arbitrario en C#
- 27. SQL: cómo obtener todos los caracteres distintos en una columna, en todas las filas
- 28. Cómo integrar mejor los datos de bases de datos existentes en un tipo de contenido
- 29. SQL establece los valores de una columna igual a los valores de otra columna en la misma tabla
- 30. falta de Oracle de un tipo de datos de bit para las columnas de la tabla