脚本生成默认值没有在SQL Server中指定的默认值不列
-
20-09-2019 - |
题
我有我迁移到SQL Server中的MySQL数据库。当我运行它针对SQL Server,因为SQL Server不提供隐含的默认值是MySQL提供的是引用数据库打破了应用程序。
我想看看是否有生成脚本,将迫使那些没有指定一个默认的所有NOT NULL列的缺省值的方式。这样我可以模仿使用显式缺省值在SQL Server MySQL的隐含默认值
解决方案
尝试这样的事情。这会产生一些SQL,您可以运行添加缺少的默认值。所以运行这个,然后采取输出和运行实际添加的默认值。此外,您可能需要调整什么,我设置的情况下默认值:
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')
不隶属于 StackOverflow