Скрипт для создания значений по умолчанию для нестолбцов, для которых в SQL Server не указаны значения по умолчанию.

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

Вопрос

У меня есть база данных MySQL, которую я переношу на SQL Server.Приложение, которое ссылается на базу данных, перестает работать, когда я запускаю его с SQL Server, поскольку SQL Server не предлагает неявных значений по умолчанию, которые предлагает MySQL.

Я хотел посмотреть, есть ли способ сгенерировать сценарий, который будет принудительно использовать значения по умолчанию для всех столбцов NOT Null, для которых не указано значение по умолчанию.Таким образом, я могу имитировать неявные значения по умолчанию MySQL, используя явные значения по умолчанию в SQL Server.

Это было полезно?

Решение

попробуйте что-нибудь вроде этого.это создаст некоторый SQL-код, который вы можете запустить, чтобы добавить недостающие значения по умолчанию.Итак, запустите это, а затем возьмите выходные данные и запустите их, чтобы фактически добавить значения по умолчанию.Кроме того, вы можете изменить то, что я установил в CASE по умолчанию:

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')
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top