SQL事务概念是啥,举个例子说明啥样的东西是事务,与程序又有何区别,

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL事务概念是啥,举个例子说明啥样的东西是事务,与程序又有何区别,相关的知识,希望对你有一定的参考价值。

如题.

数据库事务是构成单一逻辑工作单元的操作集合。

举例:转账是生活中常见的操作,比如从A账户转账100元到B账号。站在用户角度而言,这是一个逻辑上的单一操作,然而在数据库系统中,至少会分成两个步骤来完成:

1、将A账户的金额减少100元

2、将B账户的金额增加100元。

与程序的区别:一个程序中包含多个事务。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。

扩展资料:

事务必须具备四个属性,简称ACID属性: 

1、原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行。

2、一致性(Consistency):当事务完成时,数据必须处于一致状态。

3、隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务。 

4、永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性。

参考资料来源:百度百科-事务















参考技术A 事务的概念楼上已经讲了,与程序的区别,一般来讲,一个程序中包含多个事务。在SQL中,定义事务的语句一般有三条:BEGIN TRANSACTION; COMMIT; ROLLBACK;
事务一般以第一个开始,以后面两个结束。这里理解事务是数据库应用程序的基本逻辑单元即可。
参考技术B 事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作
这些操作作为一个整体一起向系统提交,要么都执行、要么都不执行
事务是一个不可分割的工作逻辑单元

转帐过程就是一个事务。
它需要两条UPDATE语句来完成,这两条语句是一个整体,如果其中任一条出现错误,则整个转帐业务也应取消,两个帐户中的余额应恢复到原来的数据,从而确保转帐前和转帐后的余额不变,

事务必须具备以下四个属性,简称ACID 属性:
原子性(Atomicity):事务是一个完整的操作。事务的各步操作是不可分的(原子的);要么都执行,要么都不执行
一致性(Consistency):当事务完成时,数据必须处于一致状态
隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的,这表明事务必须是独立的,它不应以任何方式依赖于或影响其他事务
永久性(Durability):事务完成后,它对数据库的修改被永久保持,事务日志能够保持事务的永久性
参考技术C

数据库事务具有4个特性:

    原子性(Atomicity):数据库事务中对数据库的所有操作,要么全做,要么全不做。

    一致性(Consistency):事务执行的结果必须是使数据库从一个一致性状态变到另一个一致性状态。

    隔离性(Isolation):一个事务的执行不能被其他事务干扰。

    持续性/永久性(Durability):一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。

比如:银行转账时,从帐号A转100元到帐号B。“帐号A余额减掉100元”、“帐号B余额增加100元”、和“明细账中增加一条转账的明细记录”,这三步操作就是一个完整的事务。

花式指针是啥样的?

【中文标题】花式指针是啥样的?【英文标题】:How does a fancy pointer look like?花式指针是什么样的? 【发布时间】:2017-04-18 12:24:56 【问题描述】:

C++ 参考文献提到了一个名为fancy pointers 的概念。我是从最近一个被严重否决且随后被删除的问题中了解到它们的存在的。

定义比较模糊:

当成员类型指针不是原始指针类型时,通常称为“花式指针”。

他们的用例示例是:

一个花哨指针的例子是与地址无关的映射 指针 boost::interprocess::offset_ptr,这使得可以 在共享内存中分配基于节点的数据结构,例如 std::set 和内存映射文件映射在每个不同的地址 过程。花式指针可以独立于分配器使用 通过类模板 std::pointer_traits 提供它们。

我不明白那个解释。创建精美指针的语法是什么?为什么在这种情况下我不能使用常规指针?

【问题讨论】:

当社区编辑出错时... 我的观点是任何像指针一样的东西,但不是。几乎所有迭代器都是自定义类类型,但它们的行为就像指针一样(有时存在限制,您无法执行指针支持的所有操作)。类似于指针的抽象是 fancy pointer. 另一个问题的核心是,unclear 关于被问及的内容(没有提及该术语的出现位置或上下文) .另外,我不会认为“花式指针”是一个常用术语。 @crashmstr 好吧,如果它在 C++ 参考中,这似乎很常见。 引入这个无意义的“术语”的编辑是here。我不知道该用户是在开玩笑还是在认真,但这种愚蠢已经够了。 【参考方案1】:

花哨的指针只是一个术语,用于表示类似指针但不是指针的东西。以迭代器为例。几乎所有迭代器都是自定义类类型,但它们的行为就像一个指针(有时存在限制,你不能执行指针支持的所有操作,因为它们不提供随机访问,但这是幻想的一部分。)

换句话说:像指针一样的抽象是一个花哨的指针

【讨论】:

以上是关于SQL事务概念是啥,举个例子说明啥样的东西是事务,与程序又有何区别,的主要内容,如果未能解决你的问题,请参考以下文章

spring中啥样的异常会造成事务回滚?!

JAVA的三层架构是啥样的?

啥是云主机,云主机是啥样的?

它是啥样的 SQL? TODATE()、TOCHAR()、isdate 格式()

有人可以告诉我一个好的依赖矩阵是啥样的并说明原因吗?

在 HTML5 Spec 中,似乎支持嵌套的 script 标签,那么一个真实的例子是啥样的呢?