Скрипт для создания значений по умолчанию для нестолбцов, для которых в SQL Server не указаны значения по умолчанию.
-
20-09-2019 - |
Вопрос
У меня есть база данных 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')