基于mysql事务、视图、存储过程、触发器的应用分析_Mysql

一 ,mysql事务

MYSQL中只有INNODB类型的数据表才能支持事务处理。

启动事务有两种方法

(1) 用begin,rollback,commit来实现

复制代码 代码如下:

begin  开始一个事务
rollback   事务回滚
commit    事务确认

(2)直接用set来改变mysql的自动提交模式

复制代码 代码如下:

set autocommit=0 禁止自动提交
set autocommit=1 开启自动提交

demo

复制代码 代码如下:

header("Content-type:text/html;charset=utf-8");
mysql_pconnect("localhost","root","") or die("数据库连接失败");
mysql_select_db("test");
mysql_query("set names utf8");
//开启一个事务
//mysql_query("BEGIN");
//mysql_query("START TRANSACTION");
//mysql_query("SET AUTOCOMMIT=1");//设置事务不自动提交 mysql默认是自动提交
mysql_query("SET AUTOCOMMIT=1");//开启事务
$sql1 = "INSERT INTO `test`values ('2222','测试数据')";
$sql2 = "INSERT INTO `test` values ('111','sss','22')";//特地写的错误
$res1 = mysql_query($sql1);
$res2 = mysql_query($sql2);
if($res1 && $res2)
{
    mysql_query("COMMIT");
    echo "事务提交";
}else{
    mysql_query("ROLLBACK");
    echo "事务回滚";
}
mysql_query("END");

时间: 2024-08-28 04:57:46

基于mysql事务、视图、存储过程、触发器的应用分析_Mysql的相关文章

Mysql事项,视图,函数,触发器命令(详解)_Mysql

事项开启和使用 //修改表的引擎 alter table a engine=myisam; //开启事务 begin; //关闭自动提交 set autocommit=0; //扣100 update bank set money=money-100 where bid=1; //回滚,begin开始的所有sql语句操作 rollback; //开启事务 begin; //关闭自动提交 set autocommit=0; //扣100 update bank set money=money-10

MySQL中视图和触发器学习

创建视图的语法: 其中,algorithm是可选参数,表示视图选择的算法,它有三个选项:undefined,merge,temptable.Undefined表示让MySQL自动选择所要使用的算法:merge表示将使用视图的语句与视图定义合并起来,使得视图定义的某一部分取代语句的对应部分:temptable表示将视图的结果存入临时表,然后用临时表执行语句. Cascaded是可选参数,表示更新视图时要满足所有视图和表的相关条件,该参数是默认选项:local表示更新视图时,满足该视图本身定义的条件

MySQL数据库存储引擎和分支现状分析_Mysql

MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光大起来.  在MySQL经历了2008年Sun的收购和2009年Oracle收购Sun的过程中,基本处于停滞发展的情况,在可以预见的未来,MySQL是肯定会被Oracle搁置并且逐步雪藏消灭掉的.MySQL随着相应的各主创和内部开发人员的离去,缔造了各个不同的引擎和分支,让MySQL有希望继续发扬光大起来. 本文大致讲解一下MySQL目前除了主要的 MyISAM.InnoDB.Heap(Mem

mysql+Spring数据库隔离级别与性能分析_Mysql

这里以mysql为例,先明确以下几个问题: 一.一般项目如果不自己配置事务的话,一般默认的是autocommit,即执行完一个操作后自动commit,提交事务. (注:事务是绑定在数据库操作上的,也就是当程序执行(statement.excute等操作)转而到数据库层面上的时候,事务才开始发生)当然spring可以将几个数据库操作动作绑在一个事务中,这样就需要介绍下spring事务配置方法,下面介绍的是常用方法,其他方法网上有很多.spring提供了很多事务配置的策略,很方便,简要介绍一下: 复

[用事实说明两个凡是]一个由mysql事务隔离级别造成的问题分析

背景 最近要做一个批跑服务, 基本逻辑就是定时扫描数据库的记录, 有满足条件的就进行处理(一条记录代表一个任务,以下任务与记录含义相同). 要求支持多机部署批跑服务. 批跑支持多机部署实现方案 要实现多机部署, 只要保证每个批跑服务实例每次只获取一条记录, 处理完再获取下一条即可. 其中最种要的是避免不同的实例获取到同一条记录,即所谓抢任务. 先看表结构设计: create database if not exists ae; create table ae.task ( id int prim

MySQL与SQL的触发器的不同写法_Mysql

<触发器作用> 当在SQL.MySQL数据库中一张表中插入一条记录时,触动触发器,使同一数据库的另一张表插入相同记录. 在学习的过程中,发现两者的写法是不同的. <触发器作用> 1.在SQL中建立两张表sql_test,sql_tem.(两张表的字段是一样的) 复制代码 代码如下: create table sql_test ( id int, name varchar(16) ) create table sql_tem ( id int, name varchar(16) )

mysql 让一个存储过程定时作业的代码_Mysql

1.在mysql 中建立一个数据库 test1 语句:create database test1 2.创建表examinfo create table examinfo( id int auto_increment not null, endtime datetime, primary key(id) ); 3 插入数据: insert into examinfo values('1','2011-4-23 23:26:50'); 4 创建存储过程test CREATE PROCEDURE te

基于mysql时间处理函数的应用详解_Mysql

DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, --7=星期六).这些索引值对应于ODBC标准.  mysql> select DAYOFWEEK('1998-02-03');  -> 3  WEEKDAY(date)  返回date的星期索引(0=星期一,1=星期二, --6= 星期天).  mysql> select WEEKDAY('1997-10-04 22:23:00');  -> 5  mysql> select WEEKDA

MySQL数据库的一次死锁实例分析_Mysql

1.故事起因于2016年11月15日的一个生产bug.业务场景是:归档一个表里边的数据到历史表里边,同是删除主表记录. 2.背景场景简化如下(数据库引擎InnoDb,数据隔离级别RR[REPEATABLE]) -- 创建表test1 CREATE TABLE test1 ( id int(11) NOT NULL AUTO_INCREMENT, name varchar(10) NOT NULL, PRIMARY KEY (id) ); insert into test1 values('hel