转载sql server 关于 default value的一些使用总结
转载原出处:http://blog.csdn.net/miqi770/article/details/6728733
1.在创建表的时候,给字段添加的默认值约束
- CREATE TABLE "dbo"."Test"
- (
- id int PRIMARY KEY,
- sex varchar(10) DEFAULT ('boy'),
- name varchar(40),
- age int DEFAULT ((1)),
- )
CREATE TABLE "dbo"."Test" ( id int PRIMARY KEY, sex varchar(10) DEFAULT ('boy'), name varchar(40), age int DEFAULT ((1)), )
注意:
- 此时默认值约束,没有约束名称。DMBS会自动的给添加一个“默认值约束名称”
- 注意varchar类型和int类型在DEFAULT 中的写法:分别用‘’和()把value值包起来
2.在创建表之后,给字段添加的默认值约束
- alter table [dbo].[Test] add constraint Test_name_Default Default('Tom') for baseCurrencyCode
alter table [dbo].[Test] add constraint Test_name_Default Default('Tom') for baseCurrencyCode
注意:
- 此时,必须编写一个约束名称,防止重名。
3.修改字段原有的默认值约束
- declare @csname varchar(100)
- set @csname= ''
- select @csname=[name]
- from sysobjects
- where id=(select cdefault from syscolumns where id=object_id('Test') and name='age')
- exec('alter table [dbo].[Test] drop constraint ' + @csname )
- exec('alter table [dbo].[Test] add constraint ' + @csname + ' Default((18)) for age')
declare @csname varchar(100) set @csname= '' select @csname=[name] from sysobjects where id=(select cdefault from syscolumns where id=object_id('Test') and name='age') exec('alter table [dbo].[Test] drop constraint ' + @csname ) exec('alter table [dbo].[Test] add constraint ' + @csname + ' Default((18)) for age')
注意:
- 默认值约束,不能修改。必须先drop之后再add
- drop的时候,必须知道当前“默认值约束的名称”。通过上面的sql可以查出Test表的age字段所绑定的“默认值约束名称”,才可以drop
- 测试的时候发现sqlserver2005的一个bug:默认值的长度大于字段设定的长度时候,同样不报错,可以设置成功!!!在oracle上就会报错,无法设置成功!