Script per generare i valori predefiniti per le colonne non esenti da difetti di cui SQL Server
-
20-09-2019 - |
Domanda
Ho un database MySQL che sono la migrazione a SQL Server. L'applicazione che fa riferimento le pause del database quando l'eseguo contro SQL Server perché SQL Server non offre le impostazioni di default impliciti che MySQL offre.
ho voluto vedere se c'è un modo per generare script che costringerebbe default su tutte le colonne non nullo che non hanno un predefinito specificato. In questo modo posso imitare default impliciti di MySQL utilizzando le impostazioni predefinite esplicite in SQL Server
Soluzione
provare qualcosa di simile. questo genererà un certo SQL che è possibile eseguire per aggiungere i valori predefiniti mancanti. Quindi eseguire questo e poi prendere l'uscita ed eseguire tale da aggiungere in realtà le impostazioni predefinite. Inoltre, si consiglia di modificare quello che ho impostato come predefinite nel 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')