当前位置:首页>开发>正文

Mysql中的事务是什么如何使用 MySql中的“事务”是什么有什么用

2023-04-16 16:03:34 互联网 未知 开发

 Mysql中的事务是什么如何使用 MySql中的“事务”是什么有什么用

Mysql中的事务是什么如何使用

什么是事务?

事务是逻辑上的一组操作,组成这组操作的各个单元,要不全都成功要不全都失败,这个特性就是事务

注意:mysql数据支持事务,但是要求必须是innoDB存储引擎

解决这个问题:

mysql的事务解决这个问题,因为mysql的事务特性,要求这组操作,要不全都成功,要不全都失败,这样就避免了某个操作成功某个操作失败。利于数据的安全

如何使用:

(1)在执行sql语句之前,我们要开启事务 start transaction

(2)正常执行我们的sql语句

(3)当sql语句执行完毕,存在两种情况:

1,全都成功,我们要将sql语句对数据库造成的影响提交到数据库中,committ

2,某些sql语句失败,我们执行rollback(回滚),将对数据库操作赶紧撤销

(注意:mysql数据支持事务,但是要求必须是innoDB存储引擎)
mysql> create table bank(name varchar(20),money decimal(5,1))engine=innodb defau
lt charset=utf8

mysql> inset into bank values(shaotuo,1000),(laohu,5000)

mysql> select*from bank
--------- --------
| name | money |
--------- --------
| shaotuo | 1000.0 |
| laohu | 5000.0 |
--------- --------

------没有成功“回滚”执行rollback
mysql> start transaction //开启事务
Query OK, 0 rows affected (0.00 sec)

mysql> update bank set money=money 500 where name=shaotuo
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update bank set moey=money-500 where name=laohu
ERROR 1054 (42S22): Unknown column moey in field list
mysql> rollback //只要有一个不成功,执行rollback操作
Query OK, 0 rows affected (0.01 sec)

mysql> select*from bank
--------- --------
| name | money |
--------- --------
| shaotuo | 1000.0 |
| laohu | 5000.0 |
--------- --------
------成功之后 进行commit操作
mysql> start transaction //开启事务
Query OK, 0 rows affected (0.00 sec)

mysql> update bank set money=money 500 where name=shaotuo
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> update bank set money=money-500 where name=laohu
Query OK, 1 row affected (0.00 sec)
Rows matched: 1 Changed: 1 Warnings: 0

mysql> commit //两个都成功后执行commit(只要不执行commit,sql语句不会对真实的数据库造成影响)
Query OK, 0 rows affected (0.05 sec)

mysql> select*from bank
--------- --------
| name | money |
--------- --------
| shaotuo | 1500.0 |
| laohu | 4500.0 |
--------- --------

MySql中的“事务”是什么?有什么用?

事务能保证你做的一系列动作,要么全部成功。如果有一个操作失败,就回退到修改前。 比如你要做下面几个操作, 1.删除表A中的某些记录 2.向B添加一些记录。 3.修改C表中的一些数据。 使用事务,如果1,2都成功了,3却失败了。就会回退到第1步执行前的样子,ABC表都没被修改。

什么是mysql的事务和实现

msql的一个事务的回归测试,可以自测一下,了解下事务。
举个例子:小明和小飞两个人现在手里各有¥100,突然小飞脑袋出问题了说给小明¥50,现在他们手里的钱就是(小明:¥150,小飞:¥50);这样同步就是一个事务的完成,下面是demo
/*
事务 ACID
原子性 Atomic
一致性 Consistency
隔离性 Isolation
持久性 Durability
*/
var mysql = require(mysql)
var connection = mysql.createConnection({
    host:localhost,
    user:root,
    password:,
    database:yudi
})

connection.connect()

//开始一个事务
connection.beginTransaction(function(err){
    if(err) throw err
    connection.query(update account1 set mny=0 where id=1,function(err,results){
        if(err){
            connection.rollback(function(){
                throw err
            })
        throw err
    }

connection.query(update account2 set mny=200 where id=1,function(err,results){
    if(err){
//回滚一个事物
    connection.rollback(function(){
    throw err
})
    throw err
}
//提交一个事物
connection.commit(function(err){
    if(err){
        connection.rollback(function(){
            throw err
        })
    throw err
}
console.log(success)

})
})
})
})

数据库操作中的“事务”指的是什么?

事务(transaction)是作为一个单元的一组有序的数据库操作。如果组中的所有操作都成功,则认为事务成功,即使只有一个操作失败,事务也不成功。如果所有操作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个操作失败,则事务将回滚,该事务所有操作的影响都将取消。

数据库中的事务(transaction)是什么?

数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。

mysql 事务 是 行锁还是表锁

在一个支持MVCC并发控制的系统中,哪些读操作是快照读?哪些操作又是当前读呢?以MySQL InnoDB为例:

快照读:简单的select操作,属于快照读,不加锁。(当然,也有例外,下面会分析)

select * from table where ?
当前读:特殊的读操作,插入/更新/删除操作,属于当前读,需要加锁。
select * from table where ? lock in share mode
select * from table where ? for update
insert into table values (…)
update table set ? where ?

最新文章

随便看看