~~点滴积累~~~

触发器、存储过程和函数三者有何区别?

上一篇 / 下一篇  2008-04-29 21:30:41

触发器、存储过程和函数三者有何区别?
回复此消息
触发器、存储过程和函数三者有何区别?在什么时候用触发器?什么时候用存储过程?什么时候用函数?与SQL相比,它们的速度怎样?


触发器、存储过程和函数三者有何区别? 
回复此消息 
trigger: you can use trigger if you want to do others something(format, field check, caculation etc.) when you insert, update or delete on the table. it binds with table.
procedure, function can be exist standalone.
function always must retun a value. procedure needn´t.
you can call procedure or function in trigger. you,however, cann´t call trigger in procedure and function.

Re: 触发器、存储过程和函数三者有何区别? 
回复此消息

触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或 DELETE。触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。例如,可以控制是否允许基于顾客的当前帐户状态插入定单。

触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键 约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。有关详细信息,请参见表关系。

使用触发器的优点
触发器的优点如下:

触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。


触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。


触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。例如,触发器可以回滚试图对价格低于 10 美元的书(存储在 titles 表中)应用折扣(存储在 discounts 表中)的更新。

function和存储过程是不一样的
函数作为代码的模块,用于完成一个特定的功能,而我们可以在SQL SERVER中调用函数来实现我们要的整体功能

而存储过程的作用就是要实现我们的整体功能,他可以调用函数来实现

function   是函数可以返回值,表等 

procedure   也是过程,只是它只是把一系列的sql语句封装到一起,实现某一项功能的! 

function可以在查询中使用,procedure却不可以! 


TAG:

 

评分:0

我来说两句

日历

« 2024-04-17  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 50333
  • 日志数: 71
  • 建立时间: 2007-09-10
  • 更新时间: 2009-04-07

RSS订阅

Open Toolbar