`
java-mans
  • 浏览: 11453094 次
文章分类
社区版块
存档分类
最新评论

人生第一个触发器成功+第一存储过程+事务了。

 
阅读更多

在做快捷查询时,触发器如下啊。

向cargo2中的更新数据,令cargo1中的valid字段1

create trigger test1  
before insert on cargo2 
for each row  
begin  

update cargo1 set valid = '1' where number = new.number;

end//  

create procedure Pcargo3 (in num varchar(20))
begin
select * from cargo3 where id = (select id from cargo3 where number = num
by id desc limit 1);
end;//
K, 0 rows affected (0.00 sec)


有动态处理sql语句的存储过程

create procedure pTest8(in id int,in lie varchar(20))
begin
set @sql=concat('select ',lie,' from caseinfo where id = ',id);
prepare stml from @sql;
execute stml;
end//

showprocedure status --显示数据库中所有存储的存储过程基本信息,包括所属数据库,存储过程名称,创建时间等

showcreate procedure sp_name --显示某一个存储过程的详细信息

create procedure pAttfile(in num varchar(20),in col varchar(20))
begin
set @sql=concat("select ",col," from attfile where id = (select id from attfile where ",col," !='' and number = '",num,"' order by id desc limit 1)");
prepare s from @sql;
execute s;
end//
原变量名为column试了很久未成功,改成col成功了。
                function attShow($n,$c){
                   global $host,$user,$password,$database;
					$m=new mysqli($host,$user,$password,$database);
                    $q=$m->query("call pAttfile('".$n."','".$c."')");

                    if($q != NULL){
                        $r=$q->fetch_array(MYSQLI_ASSOC);
                        
                        if(!$r){
                        	return "";
                        }else{
                        	switch ($r[$c]) {
                        		case 'Yes':return '<font color="red">YES</font>';break;
                        		case 'No':return '<font color="red">NO</font>';break;
                        		default:
                        			return '<a href="upload/'.$r[$c].'" target="_blank">DownLoad</a>';break;
                        	}
                        }
                    }else{
                    	return "isNull";
                    }
                }

上述存储函数,为何要这般定义,不解吧,一个下午的时间均在解决此上了。原因不明啊。

不能直接global啊。不行


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

以下是在做仓储管理系统三次升级时用到的。

<?php
	$success=1;
	//disable the autocommit feature
	$m->autocommit(FALSE);//设置不自动提交

	$sql="update basket set ORDERID	=ORDERID - '9' where id='4'";
		$result1=$m->query($sql);
		if(!$result1){
			$success=0;echo 'failed1';
		}
	//section 2
	$sql2="update orders set TOPAY = TOPAY - '2' whesre id = '1'";
		$result2=$m->query($sql2);
		if(!$result2){
			$success=0;echo 'failed2';
		}
	echo $success?"true":"false";
	echo "<br>";
	if($success){
		$m->commit();
		echo "the swap took place!Congratulatios!";
	}else{
		$m->rollback();
		echo "there was a problem with your swap.";
	}
	$m->autocommit(TRUE);
?>

有以下注意点:

浪费了我很长时间啊MYSQL只有 INNODB和BDB类型的数据表才支持事务处理,其他的类型是不支持的!

<?php
include_once("conn.php");

$id=$_GET[id];
$conn->autocommit(false);
if(!$conn->query("delete from tb_sco where id='".$id."'"))
{
 $conn->rollback();
}
if(!$conn->query("delete from tb_stu where id='".$id."'"))
{
 $conn->rollback();
}
 $conn->commit();
 $conn->autocommit(true);
 echo "ok"
?>



分享到:
评论

相关推荐

    Oraclet中的触发器

    触发器在数据库里以独立的对象存储,它与存储过程不同的是,存储过程通过其它程序来启动运行或直接启动运行,而触发器是由一个事件来启动运行。即触发器是当某个事件发生时自动地隐式运行。并且,触发器不能接收...

    SQLServer2000高级编程技术-已添加书签,想学存储过程、SQL编程务必要看,分析非常透彻

    第1章 简介 1.1 谁是本书的读者 1.2 本书的内容 1.3 需求 1.4 SQL Server 2000的新特性 1.4.1 改进了对Web的支持 1.4.2 改进了伸缩能力和可靠性 1.4.3 改进了开发和管理环境 1.5 样本数据库 1.5.1 样本数据库安装 ...

    SQLServer2000高级编程技术(part02)-想学存储过程 SQL编程 务必要看

    第1章 简介 1.1 谁是本书的读者 1.2 本书的内容 1.3 需求 1.4 SQL Server 2000的新特性 1.4.1 改进了对Web的支持 1.4.2 改进了伸缩能力和可靠性 1.4.3 改进了开发和管理环境 1.5 样本数据库 1.5.1 样本数据库安装 ...

    SQL sever 实训

    --创建存储过程P_Sale1,统计每种产品的销售数量和销售金额 CREATE PROCEDURE P_Sale1 AS SELECT Product.ProNO,ProName ,Price ,SUM(Quantity),SM=SUM(Price*Quantity) FROM Proout,Product WHERE Product.ProNO=...

    ASP.NET完全入门

    第一篇概论 第一章微软.NET战略和ASP.NET 简介 i. 微软.NET 的历史 ii. ASP.NET历史 iii. 众说纷纭.NET iv. ASP.NET综述 v. 小结 第二章我的第一个ASP.NET程序 i. 配置开发环境 ii. 运行配套光盘 iii. 第一个例子 iv...

    asp.net 完全入门

    第一篇 概论 第一章 微软.NET战略和ASP.NET简介 i. 微软.NET的历史 ii. ASP.NET历史 iii. 众说纷纭.NET iv. ASP.NET综述 v. 小结 第二章 我的第一个ASP.NET程序 i. 配置开发环境 ii. 运行配套光盘 ...

    ASP.NET完全入门PDF

    第一篇 概论 第一章 微软.NET战略和ASP.NET简介i. 微软.NET的历史 ii. ASP.NET历史iii. 众说纷纭.NET iv. ASP.NET综述 v. 小结第二章 我的第一个ASP.NET程序 i. 配置开发环境ii. 运行配套光盘iii. 第一个例子iv. ...

    SQLSERVER+数据库设计与实现详解

    第一章 SQL SERVER2000数据库管理系统 第二章 创建和维护数据库 第三章 设计表 第四章 表的管理 第五章 维护表的数据 第六章 结构化查询语言 SQL 第七章 视图 第八章 Transact-SQL 高级查询 第九章 SQL SERVER 编程...

    Oracle教程 超详细

    第一章 数据库基础 第二章 Oracle入门 第三章 查询基础 第四章 单行函数 第五章 分组函数 第六章 多表查询 第七章 子查询 第八章 高级查询 第九章 数据字典 第十章 Oracle数据类型 第十一章 Oracle体系结构(DBA) 第...

    Oracle超详细教程

    第一章 数据库基础 第二章 Oracle入门 第三章 查询基础 第四章 单行函数 第五章 分组函数 第六章 多表查询 第七章 子查询 第八章 高级查询 第九章 数据字典 第十章 Oracle数据类型 第十一章 Oracle体系...

    详细orale教程

    第一章 数据库基础 第二章 Oracle 入门 第三章 查询基础 第四章 单行函数 第五章 分组函数 第六章 多表查询 第七章 子查询 第八章 高级查询 第九章 数据字典 第十章 Oracle 数据类型 第十一章 ...

    ORACLE__SQL语句教学

    第一章 数据库基础 6 第二章 Oracle入门 6 第三章 查询基础 11 第四章 单行函数 14 第五章 分组函数 19 第六章 多表查询 21 ... 第十九章 游标、函数 79 第二十章 存储过程 86 第二十一章 触发器 90 第二十...

    Oracle详细教程

    第一章 数据库基础 第二章 Oracle 入门 第三章 查询基础 第四章 单行函数 第五章 分组函数 第六章 多表查询 第七章 子查询 第八章 高级查询 第九章 数据字典 第十章 Oracle 数据类型 第十一章 Oracle 体系结构(DBA...

    ORACLE详细教程

    第一章 数据库基础 第二章 Oracle 入门 第三章 查询基础 第四章 单行函数 第五章 分组函数 第六章 多表查询 第七章 子查询 第八章 高级查询 第九章 数据字典 第十章 Oracle 数据类型 第十一章 Oracle 体系结构(DBA) ...

    信永国际 中文超详细Oracle教程

    第一章 数据库基础 第二章 Oracle入门 第三章 查询基础 第四章 单行函数 第五章 分组函数 第六章 多表查询 第七章 子查询 第八章 高级查询 第九章 数据字典 第十章 Oracle数据类型 第十一章 Oracle体系...

    精通sql结构化查询语句

    以SQL Server为工具,讲解SQL语言的应用,提供了近500个曲型应用,读者可以随查随用,深入讲解SQL语言的各种查询语句,详细介绍数据库设计及管理,详细讲解存储过程、解发器和游标等知识,讲解了SQL语言在高级语言中...

    mysql面试必会必考题

    第二层实现了 MySQL 核心服务功能,包括查询解析、分析、优化、缓存以及日期和时间等所有内置函数,所有跨存储引擎的功能都在这一层实现,例如存储过程、触发器、视图等。 第三层是存储引擎层,存储引擎负责 MySQL ...

    SQL Server 2008

    第4~第13章讲述数据库管理系统SQL Server 2008的应用,其内容包括SQL Server 2008数据库基础、数据库的概念和操作、表的基本操作、数据库查询、TSQL编程、视图和索引、存储过程和触发器、事务与并发控制、数据库...

    SQL完全手册

    第一部分:SQL概述,讲述了Sql的发展以及Sql的入门,第二部分:检索数据,讲述了Sql的基础知识,第三部分:更新数据,讲述了Sql数据的增删改查以及事务,第四部分:数据库结构,讲述了如何创建数据库,视图以及SQL的安全,第五...

Global site tag (gtag.js) - Google Analytics