关于存储过程与事务

来源:百度知道 编辑:UC知道 时间:2024/05/25 16:29:29
我的理解是:两者都是多条SQL语句构成,但是根本区别是存储过程可以被部分执行而事务必须全部执行或是不执行?

不对,是两个概念,存储过程是完成一定功能的可重复调用的程序。
即,存储过程是程序。
事务是可以整个撤消的一段操作,可能是一个或几个或部份的存储过程,也可能是一条或几条指令,事务是记录的一系列的操作和变化。

存储过程与事务是两个概念。
事务强调整体性,要么成功了全部执行,要么失败了全部回滚。
存储过程本身没有这个特点。
不过,凡事不是定死的,有许多变通的余地:
第一,你可以用同步的思想强行将存储过程进行互斥,比如,你的数据访问层要调用某个存储过程,那么你用synchronized修饰程序,保证此存储过程不会被同时多线程执行;
第二,你可以在存储过程里开启事务,强制性规定此过程就是一个事务。

这两个概念可以说是两个范畴的概念,事务是数据库操作范畴的概念,保证数据库数据的完整性和一致性;存储过程是高级程序设计中模块化设计思想的重要内容。

事务是包含一组修改(插入、更新和删除)的工作的逻辑单位。事务的操作要么被保存到数据库commit,要么回滚rollback,事务中的所有修改要么全部提交,要么什么也不做,这样保证了数据库中数据的完整性和一致性。

数据库操作中为了完成一个完整的数据库任务,从而引进高级程序的设计要素。过程就是高级程序设计语言中的模块概念,将一些内部联系的命令组成一个个过程,通过参数在过程间传递数据来完成一个完整的数据库任务,这就是模块化设计思想的重要内容。

有的时候可以把一个过程看作一个事务,但是有的过程运行过程中因为满足某些条件而从过程中跳出,这时就不能把过程看作事务;反之,一个事务可能是一个过程,也可能一个事务中包含对一个或多个过程的调用。

二者概念所述的范畴不同,在数据库中,是相互联系相互区别的;而且两者都是具体的,不是抽象的,因为都可以拿出一段代码,说它是事务或是存储过程。

以上是个人理解,希望对你有所帮助。

你只说对了一部分

他们是配合使用的 如果只是用存储过程的话 那他则将执行成功的写入数据库 而将失败的抛弃不管 那样就与普通Sql语句没有区别了

事务是保证成功执行的必要条件 要么