我在这里: 首页 ? 面试试题 ? 浏览文章: SQL Server面试题(关于CHECK约束)
« 历年公务员面试题精选销售公关人员面试技巧 »

SQL Server面试题(关于CHECK约束)




内容摘要:本文是SQL Server面试题系列文章的最新篇,本文着重讨论了如何使用CHECK约束来强制实现触发器的唯一值,在SQL Server有多种方式来强制实现触发器的唯一值,作为一名合格的SQL Server dba 来说,掌握这方面的知识是应该的。
关键词:SqlServer面试题  数据库面试题  
本文地址:http://www.teecool.com/post/2007102001.html
内容正文:

使用CHECK约束来强制执行触发器的唯一值
Q. 我的SQL Server数据表中有一列允许为空(NULL)值。在该列有非空值的时候,我想让该列的值为唯一值。通过编程实现这一目标的最佳做法是什么呢?如果我在该列中设置一个UNIQUE约束,我可以只在一个记录中保有空值。我正在使用触发器来强制执行这个限制,但是你能推荐一种更简单的方法来确保所有非空的值都是唯一的吗?

A. SQL Server没有内置的机制可以禁止非空值产生重复,所以你需要使用一个自定义的CHECK约束来实现这个限制。例如,以下代码就可以实现你所要的那种完整性。

USE tempdb
Create table t1 (c1 int NULL, c2 char(5) NULL)
Create trigger mytrigger on t1 for insert, update as
BEGIN
IF (select max(cnt) from (select count(i.c1)
as cnt from t1, inserted i where t1.c1=i.c1 group
by i.c1) x) > 1
ROLLBACK TRAN
END

在SQL Server 2000中,你还可以使用INSTEAD OF触发器来执行这个限制。同INSTEAD OF触发器有关的更多信息,请参阅以下文章,要查看这些文章,请访问SQL Server Magazine,在InstantDoc(快速文档)框中输入InstantDoc编号,然后点击“Go”。文章包括:

INSTEAD OF触发器的使用窍门;InstantDoc编号 15828
视图中的INSTEAD OF触发器;InstantDoc 编号 15791
INSTEAD OF触发器;InstantDoc 编号 15524

SQL Server面试题(关于CHECK约束)一文有面试题库网收集自互联网,并非本站原创,如原作者发现SQL Server面试题(关于CHECK约束)一文,请及时告知本站,本站会作出相关处理,谢谢!!!(联系方式:百度空间留言)

最近发表