首页 > 数据库技术 > 详细

SQL Server ->> 生成代码把表字段从NULL改为NOT NULL

时间:2015-10-20 15:18:40      阅读:346      评论:0      收藏:0      [点我收藏+]

一般我们用SELECT .... INTO语句生成的表字段都是允许为NULL。而如果我们需要改成NOT NULL呢

select ALTER TABLE dbo.XXXXXXX ALTER COLUMN  + 
QUOTENAME(c.name) +   + t.name + 
case when t.name in (nvarchar,nchar) 
        then (+ cast(c.max_length/2 as nvarchar) +) 
    when t.name in (varchar,binary, char, varbinary) 
        then (+ cast(c.max_length as nvarchar) +) 
else ‘‘ end +  NOT NULL
from sys.columns c join sys.types t on c.system_type_id = t.system_type_id 
where object_id = object_id (dbo.XXXXXXX) and t.name <> sysname
order by column_id 

 

有时需要准备数据库设计文档,里面的物理设计这块需要填写像这样的表

Table: dbo.DimMonth

Column Name

Data Type

Key

Nullable

Comment

Monthkey

bigint

PK

No

 

CalendarMonth

bigint

 

No

 

CalendarMonthName

nvarchar(30)

 

No

 

CalendarQuarter

bigint

 

No

 

CalendarQuarterName

nvarchar(30)

 

No

 

CalendarYear

bigint

 

No

 

CalendarYearName

nvarchar(30)

 

No

 

FiscalMonthName

nvarchar(30)

 

No

 

FiscalMonthOfYear

bigint

 

No

 

FiscalQuarter

bigint

 

No

 

FiscalQuarterName

nvarchar(30)

 

No

 

FiscalYear

bigint

 

No

 

FiscalYearName

nvarchar(30)

 

No

 

 

如果比本身已经建立好在数据库中,我们可以通过一条脚本生成

select c.name, t.name + case when t.name in (nvarchar,nchar) 
        then (+ cast(c.max_length/2 as nvarchar) +) 
    when t.name in (varchar,binary, char, varbinary) 
        then (+ cast(c.max_length as nvarchar) +) 
else ‘‘ end, case when c.is_nullable = 1 then Yes ELSE No end
from sys.columns c join sys.types t on c.system_type_id = t.system_type_id 
where object_id = object_id (dbo.XXXXXXX) and t.name <> sysname
order by column_id 

 

SQL Server ->> 生成代码把表字段从NULL改为NOT NULL

原文:http://www.cnblogs.com/jenrrychen/p/4894812.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!