首页 > 应用开发 > IT综合 > 关于default约束
1. 如果一个field有default 值时,应加上它的constraint 名称,如:
Crate table fb_user
(
Id int,
Name varchar(10) constraint DF_fb_user_name DEFAULT ‘aaa’
)
2. 如果要删除一个有default值的字段,但以前又没有指定其constraint名称,这时应先查找这个字段上的constraint名称,然后先删除该constraint,再删除这个field.
select name as constraint_name,object_name(parent_obj)as table_name from sysobjects where xtype = 'D'
3. 下面这一段SQL能够重建所有的Default约束,所有Default约束应严格的按约定的规则来命名:DF_tableName_fieldName
begin tran
declare @constraint_name varchar(100)
declare @table_name varchar(100)
declare @column_name varchar(100)
declare @default_value varchar(400)
declare @drop_sql nvarchar(1000)
declare @add_sql nvarchar(1000)
declare cur_constraint cursor
static forward_only
for
select A.name as constraint_name,
object_name(A.parent_obj) as table_name,
col_name(A.parent_obj ,A.info) as column_name,
B.text AS default_value
from sysobjects A
inner join syscomments B on A.id = B.id
where xtype = 'D'
open cur_constraint
fetch next from cur_constraint into @constraint_name, @table_name, @column_name, @default_value
while @@fetch_status = 0
begin
set @drop_sql = N'alter table ' + @table_name + ' drop constraint ' + @constraint_name
set @add_sql = N'alter table ' + @table_name + ' add constraint ' + @constraint_name + ' default ' + @default_value + ' for ' + @column_name
exec sp_executesql @stmt = @drop_sql
exec sp_executesql @stmt = @add_sql
fetch next from cur_constraint into @constraint_name, @table_name, @column_name, @default_value
end
close cur_constraint
deallocate cur_constraint
rollback tran
GO
[@more@]来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/66009/viewspace-787706/ ,如需转载,请注明出处,否则将追究法律责任。