postgresql事务
查看更多教程:http://www.gitbook.net/postgresql/2013080567.html
事务与并发控制
数据库几大特性:
ACID:
Atomicity:原子性:一个事务要么全部执行,要么全部不执行
Consistency :一致性:执行事务的时候,数据库从一个一致的状态变更到另一个状态
Isolation:隔离性: 确保在并发执行的时候,每个事务感觉不到其他事务在并发的执行
Durability:持久性:一个事务完成之后,即使数据库发生故障,他对数据库的改变应该永久的保存在数据库中。
并发引起的现象
- 脏读:一个事务读取了第二个事务的已经修改但是未提交的数据
- 不可重复读:一个事务第一次读取数据之后,被读取的数据被另一个已提交的事务进行了修改,事务再次读取这些数据时候发现数据已经被另外一个事务所修改,两次查询不一致
- 幻读:一个事务的两次结果集记录数不一致(特殊的不可重复读)
- 查看数据库的隔离级别操作
- 查看全局事务级别
select name,setting from pg_settings where name = 'default_transaction_isolation' - 修改全局事务隔离级别
alter system set default_transaction_islation to 'REPEATABLE READ';select pg_reload_conf();select current_setting('transaction_isolation'); - 查看当前会话的事务隔离级别
show transaction_isolcation; - 设置当前事务的事务隔离级别
start transaction isolation level READ UNCOMMITED; - start TRANSACTION select xxxx
- END
事物是如何开始的?
1、每条SQL语句就是一个事物。「自动提交模式」
2、直到用户执行commit或rollback为止作一个事务。
2.1、事务开始 sql server 、Postgresql 是下面方式:
Begin transaction ;
Update student set name=‘teddy’ where id=3 ;
Update student set age=‘13’ where id=3 ;
Commit ;———>提交处理
2.2、事务开始 mysql 是下面方式:start transaction ;
start transaction ;
Update student set name=‘teddy’ where id=3 ;
Update student set age=‘13’ where id=3 ;
Commit ;———>提交处理
事务回滚例子:
begin transaction ;
Update student set name=‘teddy’ where id=3 ;
Update student set age=‘13’ where id=3 ;
rollback ;———>取消处理
创建表:create table student ( student_id integer , name varchar(12),sex varchar(12),age integer);
插入数据:insert into student values(1,'teddy','man',25),(2,’Tony’,’man',27)(3,’lida’,’man',25);
更新数据:Update student set name=‘teddy’ where id=3 ;
查询:select*from student;
删除数据: delete from student where student_id=1; —————> 只删除数据,表还存在。
删除表:drop table student;——————————————>表和数据都删除了。
删除视图:drop view aa_view_test;
创建视图:create or replace view
aa_view_test ——>视图名
(name , age) ——>视图里的字段
as
select name ,age from student;
EXIST OR NOT EXIST:是否存在
select name ,age from student_a as A
where exist (select *from student_b. as B);
case用法:
case type
when ‘a’ then ‘一级’
when ‘b’ then ‘二级’
when ‘c’ then ‘三级’
else ‘其他’ end as 类型
对集合的操作:
Union all 全部数据加起来「包含重复」
select *from student1
union all
select *from student2;
Intersect-----选取公共部分
select *from student1
Intersect
select *from student2;
except 记录减法
select *from student1
except
select *from student2;
postgresql事务的更多相关文章
- PostgreSQL事务实现
事务简介 事务管理器:有限状态机 日志管理器 CLOG:事务的执行结果 XLOG:undo/redo日志 锁管理器:实现并发控制,读阶段采用MVCC,写阶段采用锁控制实现不同的隔离级别 Postgre ...
- Odoo 后端数据库postgreSQL事务级别
Table of Contents 事务的特性 并行事务的问题 事务隔离级别 Odoo事务隔离级别 odoo事务控制 事务的特性 事务4个特性,简写未ACID 原子性(Atomicit ...
- PostgreSQL 事务管理的MVCC
PostgreSQL的并发控制机制同时实现了多版本控制MVCC协议和两阶段封锁协议.实际采用哪种协议取决于所执行的语句类型. DML语句的并发控制将使用MVCC协议: DDL语句的并发控制基于标准的两 ...
- postgresql - 事务
1.事务的使用 begin;//开启关闭自动提交的事务 insert into testtab01 values(0); rollback;//事务回滚 2.SavePoint的使用 begin;// ...
- PostgreSQL事务特性之嵌套事务
嵌套事务的实现是基于SAVEPOINT.ROLLBACK TO SAVEPOINT和RELEASE SAVEPOINT的,也就是设置一个保存点,可以回滚到保存点和释放保存点. 测试表的初始状态如下: ...
- PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(5)
2.5 XLOG的内部结构 我们将使用事务贯穿本书,并让您在技术层面上更深地洞察事情是如果工作的,我们已经增加了这部分专门处理XLOG的内部工作机制.我们会尽量避免前往下降到C级,因为这将超出本书的范 ...
- PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(3)
2.3 理解一致性和数据丢失 挖掘PostgreSQL事务日志而不考虑一致性是不可能的.在本章的第一部分,我们已经大体上解释了事务日志的基本思想.您已经知道,无需事先的日志改变的能力,使数据处于一种好 ...
- PostgreSQL Replication之第二章 理解PostgreSQL的事务日志(2)
2.2 XLOG和复制 在本章中,您已经了解到PostgreSQL的事务日志已经对数据库做了所有的更改.事务日志本身被打包为易用的16MB段. 使用这种更改集来复制数据的想法是不牵强的.事实上,这是在 ...
- PostgreSQL的9.4已经发布(译)
http://www.postgresql.org/about/news/1557/ 2014年12月18日,PostgreSQL全球开发小组发布PostgreSQL9.4,PostgresQL是世界 ...
随机推荐
- Spring拓展接口之BeanFactoryPostProcessor,占位符与敏感信息解密原理
前言 开心一刻 一只被二哈带偏了的柴犬,我只想弄死隔壁的二哈 what:是什么 BeanFactoryPostProcessor接口很简单,只包含一个方法 /** * 通过BeanFactoryPos ...
- 痞子衡嵌入式:飞思卡尔i.MX RT系列MCU特性介绍(4)- RT105x选型
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是飞思卡尔i.MX RT系列MCU的RT105x选型. 大家都知道i.MX RT105x是i.MX RT系列第一款产品,在提这款产品特性的 ...
- Jenkins结合.net平台综合应用之通过SSH方式拉取代码
上一节我们讲解了如何Jenkins如何通过轮训来监听git仓库变化然后拉取最新代码,上一节中我们使用的是https方式,然后正式环境中企业更倾向使用ssh方式.这里我们讲解一下如何通在Jenkins中 ...
- MySQL/MariaDB系列文章目录
以下是本系列文章的大纲,此页博文完全原创,花费了作者本人的极大心血,如转载,请务必标明原文链接. 如果觉得文章不错,还请帮忙点下"推荐",各位的支持,能激发和鼓励我更大的写作热情. ...
- MRC-block与ARC-block
上一篇已经讲解了MRC与ARC的基本知识,本篇我们讲解MRC-block与ARC-block的基本内容. 在MRC时代,Block会隐式地对进入其作用域内的对象(或者说被Block捕获的指针指向的对象 ...
- docker 创建mysql镜像,并成功进行远程连接
1.安装 1.1 拉取镜像 docker pull mysql 拉取成功可以验证一下 docker images 1.2 创建并启动一个mysql容器 docker run --name ly-mys ...
- Solr学习笔记---部署Solr到Tomcat上,可视化界面的介绍和使用,Solr的基本内容介绍,SolrJ的使用
学习Solr前需要有Lucene的基础 Lucene的一些简单用法:https://www.cnblogs.com/dddyyy/p/9842760.html 1.部署Solr到Tomcat(Wind ...
- Sublime Text 快捷键列表
Sublime Text 快捷键列表 快捷键按类型分列如下: 补充:1.快速的创建一个html页 :ctrl+n创建一个新的文件-->右下角选择文件类型-->输入英文"!&quo ...
- 细说addEventListener与事件捕获
细说addEventListener与事件捕获.事件冒泡(一)addEventListener的基本用法 在复杂的项目开发中,javascript和html的解耦变得至关重要,我们被推荐使用事件动态绑 ...
- 无依赖简单易用的Dynamics 365公共视图克隆工具
本人微信公众号:微软动态CRM专家罗勇 ,回复279或者20180818可方便获取本文,同时可以在第一间得到我发布的最新博文信息,follow me!我的网站是 www.luoyong.me . Dy ...