SQL Server에 기본값이 지정되지 않은 열이 아닌 기본값을 생성하는 스크립트

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

문제

SQL Server로 마이그레이션하는 MySQL 데이터베이스가 있습니다. SQL Server가 MySQL이 제공하는 암시 적 기본값을 제공하지 않기 때문에 데이터베이스를 참조하는 응용 프로그램은 SQL Server에 대해 실행할 때 분리됩니다.

기본값을 지정하지 않은 널이 아닌 모든 열에서 기본값을 강제로하는 스크립트를 생성하는 방법이 있는지 알고 싶었습니다. 이렇게하면 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