存储过程和触发器到底是个什么玩意?

来源:百度知道 编辑:UC知道 时间:2024/05/19 11:30:22
我在数据库课程里学过存储过程和触发器,但是不知道他们在编程时到底用来做什么?
请高手指教我,谢谢

存储过程相当于打包好的sql语法,可以包含复杂的sql操作,在程序调用时只要执行该存储过程,一句话就可以完成复杂的数据库操作.
触发器是也是打包好的sql语法,只不过执行它的条件是当被设定改触发器的表有变化的时候.比如我可以写一个触发器,设定它在插入一笔数据到这个表里的时候,去同步另一个表.那么在程序里我只要做到往数据库里插一笔数据,那么另一个表就可以同时被更新.
用存储过程和数据库的好处是,可以充分利用数据库资源,减少程序代码,程序员的工作将更简便,写出来的代码也更简洁明了.当然要真正明白程序在做什么,还是要到存储过程和触发器里面看明白.
呵呵,这些都是本人自身体会,你可以有选择的看看.

触发器是一种特殊类型的存储过程。主要是通过事件进行触发而被执行的,而存储过程可以通过存储过程名字而被直接调用。当对某一表进行诸如UPDATE、 INSERT、 DELETE 这些操作时,SQL Server 就会自动执行触发器所定义的SQL 语句,从而确保对数据的处理必须符合由这些SQL 语句所定义的规则。
触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂的参照完整性和数据的一致性。除此之外,触发器还有其它许多不同的功能:
(1) 强化约束(Enforce restriction)
触发器能够实现比CHECK 语句更为复杂的约束。

(2) 跟踪变化Auditing changes
触发器可以侦测数据库内的操作,从而不允许数据库中未经许可的指定更新和变化。

(3) 级联运行(Cascaded operation)。
触发器可以侦测数据库内的操作,并自动地级联影响整个数据库的各项内容。例如,某个表上的触发器中包含有对另外一个表的数据操作(如删除,更新,插入)而该操作又导致该表上触发器被触发。
(4) 存储过程的调用(Stored procedure invocation)。
为了响应数据库更新触,发器可以调用一个或多个存储过程,甚至可以通过外部过程的调用而在DBMS( 数据库管理系统)本身之外进行操作。
由此可见,触发器可以解决高级形式的业务规则或复杂行为限制以及实现定制记录等一些方面的