Script para generar valores por defecto para no columnas sin valores predeterminados especificados en SQL Server

StackOverflow https://stackoverflow.com/questions/2268501

Pregunta

Tengo una base de datos MySQL que estoy migrando a SQL Server. La aplicación que hace referencia a las bases de datos se rompe cuando lo ejecuto en SQL Server SQL Server porque no ofrece las opciones predeterminadas implícitas que MySQL ofrece.

quería ver si hay una manera de generar script que obligaría a los valores por defecto en todas las columnas no es nulo que no tienen un defecto especificado. De esta manera me puede imitar por defecto implícitos de MySQL utilizando valores predeterminados explícitas en SQL Server

¿Fue útil?

Solución

intentar algo como esto. esto va a generar algo de SQL que puede ejecutar para agregar los valores por defecto que faltan. Así que corre esto y luego tomar la salida y correr que para agregar realmente los valores por defecto. Además, es posible que desee modificar lo que se propuso como los valores por defecto en el caso:

SELECT
'ALTER TABLE '+c.TABLE_CATALOG+'.'+c.TABLE_SCHEMA+'.'+c.TABLE_NAME
    +' ADD CONSTRAINT DF_'+c.TABLE_NAME+'_'+c.COLUMN_NAME+'_'+CONVERT(varchar(5),c.ORDINAL_POSITION)
    +' DEFAULT '
        +CASE c.DATA_TYPE
             WHEN 'money'         THEN '0.0'
             WHEN 'int'           THEN '0'
             WHEN 'text'          THEN ''''''
             WHEN 'smallint'      THEN '0'
             WHEN 'datetime'      THEN 'GETDATE()'
             WHEN 'varchar'       THEN ''''''
             WHEN 'numeric'       THEN '0'
             WHEN 'tinyint'       THEN '0'
             WHEN 'smalldatetime' THEN 'GETDATE()'
             WHEN 'float'         THEN '0.0'
             WHEN 'char'          THEN ''''''
             WHEN 'bigint'        THEN '0'
             WHEN 'bit'           THEN '0'
             WHEN 'nvarchar'      THEN ''''''
         END
        +' FOR '+c.COLUMN_NAME
    FROM INFORMATION_SCHEMA.COLUMNS    c
    WHERE c.COLUMN_DEFAULT IS NULL AND IS_NULLABLE='NO'
        AND c.DATA_TYPE NOT IN ('image','varbinary','binary')
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top