default约束

default约束的作用是在insert语句执行时,如果未显式给column赋值,那么使用default约束定义的默认值给column赋值。每一列只能有一个default约束。

default 约束定义的语法是:

[CONSREAINT constraint_name]
 DEFAULT constant_expression

DEFAULT

Specifies the value provided for the column when a value is not explicitly supplied during an insert. DEFAULT definitions can be applied to any columns except those defined as timestamp, or those with the IDENTITY property. DEFAULT definitions are removed when the table is dropped. Only a constant value, such as a character string; a scalar function (either a system); or NULL can be used as a default.

constant_expression

Is a constant, NULL, or a system function that is used as the default value for the column.

一,测试用例

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_default
set id=default
where 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)

消息 547,级别 16,状态 0,第 1 行
INSERT 语句与 CHECK 约束"CK_ID_IsPositive"冲突。该冲突发生于数据库"db_study",表"dbo.dt_default_Check", column ‘id‘。
语句已终止。

参考文档:

https://msdn.microsoft.com/en-us/library/ms190273(v=sql.110).aspx
https://msdn.microsoft.com/en-us/library/ms188066(v=sql.110).aspx
https://msdn.microsoft.com/en-us/library/ms187742(v=sql.110).aspx
https://msdn.microsoft.com/zh-cn/library/ms174979.aspx

时间: 2024-10-13 11:33:28

default约束的相关文章

SQL DEFAULT 约束

SQL DEFAULT 约束 DEFAULT 约束用于向列中插入默认值. 如果没有规定其他的值,那么会将默认值添加到所有的新记录. SQL DEFAULT Constraint on CREATE TABLE 下面的 SQL 在 "Persons" 表创建时为 "City" 列创建 DEFAULT 约束: My SQL / SQL Server / Oracle / MS Access: CREATE TABLE Persons ( Id_P int NOT NUL

SQLServer值DEFAULT约束

DEFAULT约束添加规则 1.若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL. 2.如果"默认值"字段中的项替换绑定的默认值(以不带圆括号的形式显示),则将提示你解除对默认值的绑定,并将其替换为新的默认值. 3.若要输入文本字符串,请用单引号 (') 将值括起来:不要使用双引号 ("),因为双引号已保留用于带引号的标识符. 4.若要输入数值默认值,请输入数值并且不要用引号将值括起来.

SQLServer之修改DEFAULT约束

使用SSMS数据库管理工具修改DEFAULT约束 1.连接数据库.选择数据表->右键点击->选择设计. 2.在表设计器窗口->选中要修改的数据列->在列属性中找到默认值绑定->进行修改. 3.点击保存(或者ctrl+s)->关闭表设计器->刷新表->重新打开表设计器查看. 使用T-SQL脚本修改DEFAULT约束 DEFAULT约束修改规则必须首先删除现有的DEFAULT约束,然后使用新定义重新创建,才能使用Transact-SQL修改DEFAULT约束.

SQLServer之DEFAULT约束

原文:SQLServer之DEFAULT约束 DEFAULT约束添加规则 1.若在表中定义了默认值约束,用户在插入新的数据行时,如果该行没有指定数据,那么系统将默认值赋给该列,如果我们不设置默认值,系统默认为NULL. 2.如果"默认值"字段中的项替换绑定的默认值(以不带圆括号的形式显示),则将提示你解除对默认值的绑定,并将其替换为新的默认值. 3.若要输入文本字符串,请用单引号 (') 将值括起来:不要使用双引号 ("),因为双引号已保留用于带引号的标识符. 4.若要输入数

SQL语句建表、设置主键、外键、check、default、unique约束

· 什么是数据库? 存放数据的仓库. · 数据库和数据结构有什么区别? 数据结构要解决在内存中操作数据的问题,数据库要解决在硬盘中操作数据的问题.数据结构研究一些抽象数据模型(ADT)和以及定义在该模型上的一些操作,数据库是由表.关系.操作组成. · 什么是主键? 主键用来标识记录的唯一性. · 什么是外键? 外键用来标识表与表之间的联系. · 什么是check约束? check约束限制了输入值的范围. · 什么是default约束? 给某个属性一个默认值. · 什么是unique约束? 限制某

postgresql----数据库表的约束----NOT NULL,DEFAULT,CHECK

数据库表有NOT NULL,DEFAULT,CHECK,UNIQUE,PRIMARY KEY,FOREIGN KEY六种约束. 一.NOT NULL ---- 非空约束 NULL表示没有数据,不表示具体的数值,所以在数据库中NULL是不等于NULL的.判断表中的一个单元格是不是NULL使用的是IS NULL或者IS NOT NULL,而不是=NULL或者!=NULL,当一个字段设置NOT NULL约束后,INSERT时必须给该字段赋值,否则拒绝写入.在一些程序语言(如C)查询结果中出现NULL有

SQL高级应用--约束三--(CHECK、DEFAULT)

SQL CHECK 约束 CHECK 约束用于限制列中的值的范围 如果对单个列定义 CHECK 约束,那么该列只允许特定的值 如果对一个表定义 CHECK 约束,那么次约束会在特定的列中对值进行限制 下面的SQL在表创建时为列 创建CHECK约束 下面的SQL 在“Persons”表创建时为“Id_P”列创建 CHECK 约束.CHECK 约束规定“Id_P”列必须只包含大于0的整数 MySQL CREATE TABLE Persons ( Id_P int NOT NULL, LastName

SQLite 约束

约束是在表的数据列上强制执行的规则.这些是用来限制可以插入到表中的数据类型.这确保了数据库中数据的准确性和可靠性. 约束可以是列级或表级.列级约束仅适用于列,表级约束被应用到整个表. 以下是在 SQLite 中常用的约束. NOT NULL 约束:确保某列不能有 NULL 值. DEFAULT 约束:当某列没有指定值时,为该列提供默认值. UNIQUE 约束:确保某列中的所有值是不同的. PRIMARY Key 约束:唯一标识数据库表中的各行/记录. CHECK 约束:CHECK 约束确保某列中

sql 高级 (四)(SQL 约束 (Constraints))

SQL 约束 NOT NULL UNIQUE PRIMARY KEY FOREIGN KEY CHECK DEFAULT UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证. 区别:每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束. unique  sql  ?unique ?  Constraint   on   create   table(表未被创建) MySql   CREATE TABLE Persons ( Id_P