Mysql 系列文章主页 =============== 刚开始学习 Mysql 锁的时候,觉得 Mysql 使用的是行锁,再加上其默认的可重复读的隔离级别,那就应该能够自动解决并发事务更新的问题.可事实上,并不能解决! 可是,为什么不能解决呢? 带着问题,自己写了个简单Demo,来测试并分析其中道理: Demo 代码路径:https://github.com/cyhbyw/cyh_Spring_IsolationConcurrencyTransaction Demo 工程名称:usingMyb
SQLite复杂表的更新方式 在SQLite中,如果早期设计的表无法满足需要,就需要对表进行更新,如修改名字.添加列.如果针对简单表,修改起来相对容易,直接使用提供的ALTER命令即可.但是如果该表与视图.触发器.索引有关联,处理起来就相对繁琐一些.下面讲解这类表的修改方式. (1)使用以下命令,备份视图.触发器的SQL脚本. SELECT sql FROM main.sqlite_master WHERE type='view' or type='trigger' (2)关
FMDB使用SQLite事务Save Point 在SQLite中,事务提供了批量处理,批量撤销的功能.当批量操作中有一步无法完成操作,就会把执行过的语句都撤销,恢复到撤销前的状态.但是由于SQLite不支持事务嵌套,所以用户不能直接完成复杂的事务.不过,SQLite提供了保存点Save Point机制.用户可以在事务中添加保存点,然后根据情况,回滚到指定的保存点,并可以重新执行保存点之后的代码.这样,通过保存点机制,可以变相实现事务嵌套. 为了满足开发者需要,FMDB在FMDataba
BEGIN TRANSACTION begin-stmt: hide commit-stmt: hide rollback-stmt: hide No changes can be made to the database except within a transaction. Any command that changes the database (basically, any SQL command other than SELECT) will automatically start
SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度.例如:向数据库中插入100万条数据,在默认的情况下如果仅仅是执行query.exec("insert into DataBase(......) values(......)");就会打开和关闭文件100万次,所以速度当然会很慢.SQLite数据库是支持事务操作的,于是我们就可以通过事务来提高数据库的读写速度.事务的基本