事务是逻辑上的一组 *** 作,组成这组 *** 作的各个单元,要不全都成功要不全都失败,这个特性就是事务
注意: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 |
+---------+--------+
有三种。第一种是显式声名的事务,这种事务要以BEGINTRANSACTION为事务的起始标志。第二种是自动提交事
务,这是SQL
Server的缺省设置。每一个T-SQL语句在执行完成后会被自动提交。第三种是隐含事务,在这种方式下,
SQL
Server会在当前事务被提交或回滚后自动启动一个新的事务,这个新事务直到用户执行COMMIT或ROLLBACK为止,这时系
统又会启动一个新事务。这样就形成了一个连续的事务链。
答:Cluster
Index和Noncluster
Index的结构都是平衡树。它们的主要区别是Cluster
Index的叶子节点是DATA
PAGE
而Noncluster
Index的叶子节点是数据在DATA
PAGE中的指针。
答:可以使用SP_RENAME来修改Table的名字。
例如:use
pubscreate
table
test(
a
char(10))
sp_rename
test,newtest
这个例子将新建的名为test的Table改为newtest。
答:在这种情况下,要运行SQL
Server7.0
Setup程序。Setup程序会根据新的机器名重新设置SQL
Server。
答:如果您没有成功的安装SQLServer7.0,有几个文件可以帮助您确定是那一步出的错。首先在Windows目录下的
SQLstp.log文件包含有setup过程的详细信息。查看这个文件可以确定Setup是在那一步出错的。
如果Setup过程是在配置的部分出错,那么查看在MSSQL7\Log目录下的错误日志和在MSSQL7\Install目录下的
Cnfgsvr.out文件。SQLServer7.0Setup运行一个名为Cnfgsvr.exe的应用程序来配置SQLServer。这个程序启动SQLServer,
连接SQLServer并运行初始安装脚本。在这一过程中出现的任何错误都会被写入Cnfgsvr.out文件。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)