`
evget
  • 浏览: 144695 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

SQL Server约束和DML触发器的比较

阅读更多
文章关键字:|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)



未完,原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9200
分享到:
评论

相关推荐

    基于SQL Server2008的DML触发器设计实例分析.pdf

    在SQL Server 2008中,触发器分为两大类:DML触发器和DDL触发器。DML触发器包括INSERT、UPDATE和DELETE触发器,它们在相应的DML操作发生前后被激活。DML触发器能够在数据层面上提供额外的检查和控制,确保数据变动...

    SQL Server中DML触发器的实用性研究.pdf

    DML触发器在SQL Server数据库中的应用相当广泛,它是数据库管理系统中用于自动执行复杂数据操作的一种机制,具有很高的实用性和灵活性。触发器的设计和实现能够帮助数据库管理员和开发者自动化维护数据完整性、自动...

    SQL Server数据库DML触发器的研究与应用.pdf

    在SQL Server中,主要有两种类型的DML触发器:AFTER触发器和INSTEAD OF触发器。 AFTER触发器是在数据行已经被插入、更新或删除之后执行的触发器。它是SQL Server中较传统的一种触发器类型,通常用于执行一些附加的...

    16.sql.server.2005.触发器 16.sql.server.2005.触发器

    这些操作被称为DML(数据操纵语言)事件,触发器则提供了对这些事件的响应机制,增强了数据库的规则和约束。以下是关于SQL Server 2005触发器的详细知识点: 1. **触发器类型**: - **AFTER Trigger**: 在DML语句...

    SqlServer2000触发器

    **SQL Server 2000 触发器详解** ...综上所述,SQL Server 2000的触发器是数据库管理中的重要工具,用于在特定事件发生时执行定制逻辑,以维护数据的完整性和一致性。理解和熟练使用触发器对数据库开发者至关重要。

    sql server 2005学习笔记之触发器

    触发器主要分为两类:DML触发器和DDL触发器。 DML触发器是针对数据操纵语言(Data Manipulation Language)事件的,比如INSERT、UPDATE或DELETE操作。DML触发器又细分为After触发器和Instead Of触发器。After触发器...

    使用SQL Server触发器实现数据表的级联更新.pdf

    在SQL Server中,有两种触发器:DDL触发器和DML触发器。DDL触发器是被数据定义语句(DDL)所触发而被调用的触发器;DML触发器是被数据操作语句(DML)所触发而被调用的触发器。数据完整性规则主要由DML触发器创建。 ...

    SQL Server 利用触发器对多表视图进行更新的实现方法

    - 在SQL Server中,有DML(Data Manipulation Language)触发器和DDL(Data Definition Language)触发器。本例主要涉及DML触发器,用于处理INSERT、UPDATE和DELETE操作。 2. **DML触发器的工作原理**: - 当对表...

    Sql Server 存储过程和触发器.pdf

    - **DML触发器**: 在数据操纵语言(DML)操作(INSERT、UPDATE、DELETE)执行前后触发。 - **DDL触发器**: 在数据定义语言(DDL)事件(如创建表、索引等)发生时触发。 #### 四、存储过程与触发器的高级应用 - **多...

    SQL SERVER 触发器视频讲解

    SQL Server中的触发器分为两种类型:DML(Data Manipulation Language)触发器和DDL(Data Definition Language)触发器。 1. DML触发器:DML触发器响应INSERT、UPDATE和DELETE操作。当用户尝试对表进行这些操作时...

    SQL Server 2005编程入门经典-触发器和存储过程教程

    《SQL Server 2005编程入门经典-触发器和存储过程教程》是针对初学者的一本详尽指南,旨在帮助读者深入理解SQL Server 2005中的核心概念,特别是触发器和存储过程这两大数据处理的重要工具。下面将详细阐述这两个...

    SQL Server中多行数据更新的触发器应用研究.pdf

    触发器分为DML触发器和DDL触发器两大类。DML触发器与数据操纵语言(DML)事件相关联,即INSERT、UPDATE和DELETE操作。当数据表上定义了DML触发器,并且在该表上执行了相应的数据操作时,触发器就会自动被激活。激活...

    sql server 2005第十二课(sql server触发器)

    在SQL Server中,触发器是一种特殊的存储过程,它们在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时自动执行,为数据库提供了更高级别的控制和业务逻辑实施。 一、触发器介绍 触发器可以视为数据库规则和...

    SQL Server数据库实验_存储过程与触发器设计.docx

    在SQL Server中,每个触发器都会涉及两个临时表`INSERTED`和`DELETED`,它们记录了数据变化前后的情况,方便我们在触发器中进行比较和处理。 实验内容涵盖了多种存储过程和触发器的使用场景,比如添加新记录、查询...

    在SQL Server2005由触发器的使用.pdf

    【SQL Server 2005 触发器的使用】 SQL Server 2005 中的触发器是一种...总结来说,SQL Server 2005的触发器是实现数据完整性、业务规则和复杂操作的重要工具,理解并熟练运用触发器对于数据库管理和维护至关重要。

    SQL Server 2000中基于触发器的自动更新.pdf

    在SQL Server 2000中,触发器是一种数据库对象,用于在特定的DML(Data Manipulation Language)操作(INSERT、UPDATE、DELETE)发生时自动执行一段代码,以实现数据的自动更新功能。这种机制使得数据库能够根据业务...

    sqlserver2005学习笔记之触发器简介.pdf

    触发器的主要作用在于增强数据的完整性和有效性,它们能完成比约束更复杂的数据验证,检查SQL操作的合法性,修改其他数据表的内容,调用存储过程,发送SQL Mail,返回自定义错误信息,甚至阻止对数据表结构的更改或...

    SQL Server用触发器强制执行业务规则

    DML触发器响应INSERT、UPDATE或DELETE操作,而DDL触发器则在数据库对象的创建、修改或删除等结构操作时被激活。 在SQL Server 2000中,触发器作为一种特殊的存储过程,可以在数据改变时自动执行。当对表执行插入、...

    SQL Server触发器使用方法探析.pdf

    在SQL Server 2005及以后的版本中,触发器被分为两种类型:DML触发器和DDL触发器。DML触发器针对INSERT、UPDATE和DELETE操作,而DDL触发器则在执行CREATE、ALTER、DROP等数据定义语言时触发。这与SQL Server 2000...

    SQL Server触发器

    在SQL Server中,触发器分为两种主要类型:后触发器(AFTER Trigger)和替代触发器(INSTEAD OF Trigger)。 1. 后触发器:这种触发器在DML操作(如INSERT、UPDATE或DELETE)实际执行后触发。它们通常用于执行额外...

Global site tag (gtag.js) - Google Analytics