博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Constraint4:default约束
阅读量:5862 次
发布时间:2019-06-19

本文共 2179 字,大约阅读时间需要 7 分钟。

Default约束的作用是在insert语句执行时,如果未显式给指定的column赋值,那么使用默认值给column赋值;如果在Insert命令中显式为指定的Column赋值,那么将插入显式值。每一列只能有一个default约束。

在执行update命令时,如果为Column指定default值,实际上,使用该column的默认值为该column赋值。

在Column Level上, default 约束定义的语法是:

[CONSREAINT constraint_name] DEFAULT constant_expression

在Table Level上,default 约束定义的语法是:

[ CONSTRAINT constraint_name ] DEFAULT constant_expression FOR column_name

关键字 DEFAULT 为Column显式指定一个默认值,默认值可以是常量值(Constant),标量函数(Scalar),或者NULL值。Default 约束不能为RowVersion(或Timestamp),或Identity 属性列指定默认值。

一,测试用例

create table dbo.dt_default(    id int null constraint DF_ID default 1, -- default(1)    code int null)insert into dbo.dt_default(code)values(3)insert into dbo.dt_default(id,code)values (2,2)update dbo.dt_defaultset id=defaultwhere code=2

1,第一条insert语句,由于未显式给id列赋值,那么在执行insert语句时,将默认值1插入到表中。
2,在update语句中,使用default 关键字对id赋值,那么id的值是default约束定义的值。

对于DEFAULT约束:

  • 1、默认值只在insert语句中使用,在update语句和delete语句中被忽略。
  • 2、如果在insert语句中显式指定要插入的值,那么插入命令不使用默认值;如果没有显式提供值,那么总是使用默认值。
  • 3,在执行update命令时,可以通过使用关键字DEFAULT,将更新的值设置为默认值。

二,在执行insert命令时,default 约束和check约束的执行顺序

在执行insert命令时,先执行default约束,后执行check约束。

create table dbo.dt_default_Check(    id int null constraint DF_ID default 0 constraint CK_ID_IsPositive check(id>0),    code int null)insert into dbo.dt_default_Check(code)values(0)

INSERT 语句与 CHECK 约束"CK_ID_IsPositive"冲突。该冲突发生于数据库"db_study",表"dbo.dt_default_Check", column 'id'。语句已终止。

三,在已经存在的表中增加,删除,修改 default约束,

create table dbo.dt_test_default(id int ,code int)

1,增加default 约束,此时增加的default 约束是table level的约束

alter table dbo.dt_test_defaultadd constraint DF_Test_ID default(1) for id

2,删除Default 约束

alter table dbo.dt_test_defaultdrop constraint DF_Test_ID

3,修改default约束
修改default约束的workaround是先删除 default约束,后增加default约束

alter table dbo.dt_test_defaultdrop constraint DF_Test_ID alter table dbo.dt_test_defaultadd constraint DF_Test_ID default(2) for id

4,在表中在增加一个新的column,并指定default 约束

alter table dbo.dt_test_defaultadd sex char(1)constraint DF_Test_Sex default('M') constraint CK_Test_Sex check(sex in('M','F'))

 

参考文档:



作者
出处
本文版权归作者和博客园所有,欢迎转载,但未经作者同意,必须保留此段声明,且在文章页面醒目位置显示原文连接,否则保留追究法律责任的权利。
分类:
标签: , ,
本文转自悦光阴博客园博客,原文链接:http://www.cnblogs.com/ljhdo/p/4984278.html,如需转载请自行联系原作者
你可能感兴趣的文章
Spring Security笔记:自定义登录页
查看>>
中间件的理解
查看>>
用于主题检测的临时日志(452a49c2-4455-430f-a1cc-bbcd2d1944dd - 3bfe001a-32de-4114-a6b4-4005b770f6d7)...
查看>>
Convert Sorted Array to Binary Search Tree leetcode java
查看>>
【BZOJ】1041: [HAOI2008]圆上的整点(几何)
查看>>
Biorhythms(中国剩余定理)
查看>>
PL/SQL连接oracle数据库
查看>>
项目管理心得:一个项目经理的个人体会、经验总结
查看>>
android 检测网络是否可用
查看>>
XSS测试语句大全
查看>>
C#异步调用
查看>>
阿里2015校招面试回忆录(成功拿到offer)
查看>>
Android Activity的生命周期
查看>>
linux find
查看>>
Android4.2以及最新SDK的尝鲜使用
查看>>
[大家谈谈] 13个在线接收短信的国外网站
查看>>
Atitit. Dwr 抛出异常error解决方案
查看>>
10分钟掌握XML、JSON及其解析
查看>>
FarBox的建站过程
查看>>
雷人的一幕:国外的codeproject论坛竟有人发“中文贴”.....
查看>>