触发器和存储过程的区别
Ⅰ 存储过程与触发器的区别和联系
我的理解:主要是使用场合不同,还有就是触发器中不能使用commit(这个应该是约定而不是规定)
存储过程相当于打包好的sql语法,可以包含复杂的sql操作,在程序调用时只要执行该存储过程,一句话就可以完成复杂的数据库操作.
Ⅱ SQL中触发器、存储过程
1、触发器:当向表unit插入的数据后,且objectid>10000时,向表test_tab插入数据
create
trigger
trig1
after
insert
on
unit
for
each
row
when
(objectid>10000)
begin
insert
into
test_tab
values(new.objectid,new.name);
end;存储过程:向表test插入调用存储时的参数@id,@namecreate
procere
pro_name
@id,@nameasbegininsert
into
test
values(@id,@name);end;2、两个区别,通过语法可以看出来,触发器是在执行了一定的操作后,根据触发条件,系统自动执行某一操作;而存储过程则是根据你设定的特定操作,来进行相应的操作而已。3、至于什么时候用触发器,什么时候用存储过程,这个就要根据你的使用情况了。比如说,在对某张表进行了特定操作后,我们让系统自动去执行一些操作,这个时候就可以使用触发器。而存储过程呢,如果我们在某一个事务中要进行的sql操作特别多,那么我们就可以把这些sql语句用存储过程来汇总,达到执行一遍存储过程就可以执行多条sql命令的目的。另外,你听说的现在不用触发器,这点明显是被误导了,触发器和存储过程是各有优点的。举个例子,比如说电信的通话记录,你可以想象每天的数据量有多大,那么为了保证系统的性能,我们就可以设定触发器来对表的容量进行限定,比如达到了1000万条数据,我们可以触发一个清表的操作,那么这张表就可以保证数据量始终在1000W以下(这个例子不是很合适,但是可以说明点问题)。之所以有人说不用触发器,这点也是从数据库性能来说的,说实话,使用触发器时,如果设计得不合适,那么对整个系统的性能会造成很大的影响的,所以在设计数据库时,一定要慎重。整个产品的性能并不是说代码优化就行了,数据库的架构设计也应该考虑在其中。
Ⅲ 数据库存储过程、函数、触发器的区别是什么
三者差别:
1、存储过程实现的功能要复杂一点,而函数实现的功能针对性比较强。;
2、存储过程一般是作为一个独立的部分来执行,而函数可以作为查询语句的一个部分来调用;
3、触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。
分别含义:
1、存储过程的特点
①存储过程只在创建时进行编译,以后执行存储过程都不需再重新编译,而一般SQL语句每执行一次就编译一次,所以使用存储过程可提高数据库执行速度。
② 当对数据库进行复杂操作时(如对多个表进行Update、Insert、Query、Delete时),可将此复杂操作用存储过程封装起来。
③可以在过程中调用另一个存储过程。可以在存储过程中调用函数。这可以简化一系列复杂语句。
④ 安全性高,可设定只有某用户才具有对指定存储过程的使用权。
⑤参数有三种(IN、OUT、IN OUT),可返回多个参数值。
⑥在ORACLE中,若干个有联系的过程可以组合在一起构成程序包。
⑦存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
2、函数的特点
①函数只有一种参数(IN),只有一条RETURN语句,只能返回单一的值。
②可在SQL语句(DML或SELECT)中调用函数。由于函数可以返回一个表对象,因此它可以在查询语句中位于FROM关键字的后面。
3、触发器的特点
触发器是特殊的存储过程,存储过程需要程序调用,而触发器会自动执行。