在做快捷查询时,触发器如下啊。
向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//show procedure 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" ?>