首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 平面设计 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT教育
Google
您现在的位置: 中国IT实验室 >> Windows >> 服务器技术 >> SQL Server >> 正文

比较SQL Server约束和DML触发器

 这些年来,我发现许多开发者对于何时使用数据操纵语言(DML)触发器与何时使用约束感到迷惑。许多时候,如果没有正确应用这两个对象,就会造成问题。本文将为您何时使用约束和DML触发器提供一些启示,以帮助你避免我遇到的纠正问题。

何为约束和DML触发器?

 约束是数据库引擎用来约束一个表或一个表关系中的数据,以维持数据库完整性的一个对象。这些约束包括CHECK、UNIQUE、PRIMARY KEY等。这里提供在TSQL中定义约束的更多细节。

 AFTER触发器是一种特殊类型的TSQL代码块,当一个DML语句根据触发器定义的表执行时,它得到执行。(在本文中我仅指这种触发器。)

何时使用约束和DML触发器

 使用约束比使用触发器更加有利(如果你可以使用约束的话)。你总是可以写出一个触发器,完成和一个约束相同的工作,但这样做一般没有什么意义。

 考虑使用一个外键约束和DML触发器。使用外键约束的目的是为了确保允许进入一个表的一列或多列的值出现在一个单独表的一列或多列中。你可以使用DML触发器建立相同的功能。

列表A建立了SalesHistory和I_SalesProducts表,我将在例子中使用它们,并给它们加载一些数据。

IF OBJECT_ID('SalesHistory')>0

DROP TABLE SalesHistory;

GO

CREATE TABLE [dbo].[SalesHistory]

(

[SaleID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,

[Product] [varchar](10) NULL,

[SaleDate] [datetime] NULL,

[SalePrice] [money] NULL

)

GO DECLARE @i SMALLINT

SET @i = 1WHILE (@i <=100)

BEGIN

INSERT INTO SalesHistory(Product, SaleDate, SalePrice)

VALUES('Computer', DATEADD(mm, @i, '3/11/1919'), DATEPART(ms, GETDATE()) + (@i + 57))

INSERT INTO SalesHistory(Product, SaleDate, SalePrice)

VALUES('BigScreen', DATEADD(mm, @i, '3/11/1927'), DATEPART(ms, GETDATE()) + (@i + 13))

INSERT INTO SalesHistory(Product, SaleDate, SalePrice)

VALUES('PoolTable', DATEADD(mm, @i, '3/11/1908'), DATEPART(ms, GETDATE()) + (@i + 29))SET @i = @i + 1

END

GOINSERT INTO l_SalesProducts(Product)

SELECT 'BigScreen'

UNION

SELECT 'Computer'

UNION

SELECT 'PoolTable' 

 现在我有了一些表和一些数据可供利用,让我们在SaleHistory表中建立一个外键约束。

ALTER TABLE SalesHistory

ADD CONSTRAINT fk_SalesHistory FOREIGN KEY (Product) REFERENCES

l_SalesProducts(Product) 

 

[1] [2] 下一页

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 专题推荐

 ·带你领略windows系统“另类”安装
 ·“调教”磁盘,让Vista更在行
 ·windows系统性能优化专题
 ·windows系统安全——系统进程与病毒
 ·Windows 平台搭建VPN攻略…
 ·Windiws 系统备份与还原…
 ·专题:Windows Vista系统新特性…
 ·Windows server 2008专题报道…
 ·关注未来 关注Windows Vista成长…
 ·明明白白 学会Windows权限设置…
 今日更新
 认证培训
 频道精选
 Windows频道导航