MS,第1张

MS,第2张

SQL服务中的约束是如何工作的?
请看下面的代码。

创建表t
(
t1 int identity(1,1),
T2 char(1)
)
创建表s
(
s1 int identity(1,1),
s2 char(5)约束uk_s2 unique
)

插入t值(' a ')
插入t值(' ga ')
插入t值(' c ')

插入s值(' aa ')
插入s值(' bb ')
插入s值(' aa ')
插入s值(' cc ')
插入s值(' DD ')
select * from s
select * from t

在查询结果中
t表
1 a 2 c表
s表
1a2b4cc5dd

这里有个问题
当我运行insert语句时,约束什么时候运行?
插入T表时,当插入的字符串超过设定长度时,插入失败,自动增加的标识列不增长。在S表中插入语句Rollback
时,当插入的字符串重复时,插入失败,但自动增加的标识列自动增长,所有语句不回滚。

上述现象在check约束方面的表现是一样的
。我认为:
在运行insert语句时,首先检查插入的数据是否违反了字段的长度、类型等条件。如果没有,数据会被临时插入到表中,然后检查表中的数据是否违反了表的约束。如果违反了约束,则删除该行记录。如果没有,数据将被成功插入。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » MS

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情