我有我迁移到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')
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top