惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - 马啸西风

SQL Server 2008之XML数据存储 SQL Server 2008之托管代码 SQL Server 2008之触发器 SQL Server 2008之用户自定义函数 SQL Server 2008之错误处理 SQL Server 2008之创建高并发应用程序 SQL Server 2008之合并数据和表传递 SQL Server 2008之存储过程的设计和实现 SQL Server 2008之通过非聚集索引提高性能 SQL Server 2008之读取查询计划 SQL Server 2008之表结构实现 SQL Server 2008之索引设计 SQL Server 2008之视图的设计和实现 SQL Server 2008之表的设计和实现 SQL Server 2008之数据类型 启用Application library caching时,将多个不同步的程序集打包到一个ZIP包中的问题 垃圾收集导致的概率性发生的bug DataGridView中下拉列表框的实现 C#之集合
SQL Server 2008之约束
马啸西风 · 2012-12-25 · via 博客园 - 马啸西风
  1. 使用CHECK约束时,当返回FALSE时,插入值将被拒绝,但是如果为NULL的话不会被拒绝,需要非常小心返回NULL值的情况
  1. 在数据库术语中,候选键用来描述列或者列的组合,这些列用来唯一标示一行数据,所有这些列都不允许为NULL;主键就是一个候选键,是用来唯一确定一行的主要方式;最好是为主键约束定义一个名称,而不是让SQL Server为主键定义名称;SQL Server内部会为主键约束创建索引
  1. UNIQUE约束要求只有一行可以为NULLSQL Server内部会为UNIQUE约束创建索引,和其他约束一样,最好为UNIQUE约束定义一个名称,而不是让SQL Server去定义名称
  2. FOREIGN KEY必须引用主键列或者UNIQUE列,可以为NULL,最好为外键约束定义一个名称;当你添加外键约束时,SQL Server已经存在的数据,保证引用是合法的,如果在添加外键约束时指定了WITH NOCHECK选项,SQL Server不会检查已经存在的数据,只有在将来更新或者插入数据时才会检查外键约束
  3. 当你在一张表上添加外键约束时,你必须拥有目标表的REFERENCES权限,这样避免其他用户引用你的表,导致你无法删除或者修改自己的表,直到这个用户删除了引用为止;需要注意的是,为用户提供了REFERENCES,而没有提供SELECT权限,并不能阻止用户查看你表中的数据,因为用户可以暴力尝试所有值
  1. 外键约束包括一个CASCADE选项,用来指定级联引用完整性,定义当用户更新或者删除外键引用列时,采取的行为
  • NO ACTION,返回错误并回滚操作
  • CASCADE,将操作同步更新到引用表中,即如果是删除操作的话,引用表中的数据页会被删除,如果是更新操作的话,引用表中的外键也会被更新
  • SET NULL,执行更新操作时,将引用表中的外键列置为NULL
  • SET DEFAULT,执行更新操作时,将引用表中的外键列置为默认值
  1. 约束考虑:
  • 为约束定义有意义的名称
  • 创建、修改和删除约束不会删除重建表
  • 不仅仅在数据库中执行数据检查,在其他层也要执行数据检查,并且要保证各层数据检查的一致性
  • 当执行批量数据加载或者更新时,禁用约束会获取更好的性能

发表于 2012-12-25 14:01  马啸西风  阅读(855)  评论()    收藏  举报

Powered By 博客园