Board logo

标题: 为什么mysql事务执行不了? [打印本页]

作者: wangliangufeng    时间: 2006-4-13 13:10     标题: 为什么mysql事务执行不了?

php代码片断:      
/*-----数据库连接参数--*/      
$host="localhost";      
$user="root";      
$pwd="xxx";      
$database="luntan";      
/*-----数据库连接-*/      
$db=mysql_connect($host,$user,$pwd);      
$sql="START    TRANSACTION;      
                     SELECT    @A:=MAX(iTopicId)    FROM    lun_topic;      
                     INSERT    INTO    lun_topic    VALUES(@A+1,'主题','内容','作者',NOW(),1);      
                     COMMIT;";      
$result=mysql_db_query($database,$sql);//该句执行不了,也不报错
作者: xingdanyinggu    时间: 2006-4-13 13:10

mysql4之前不支持事务的吧,5以后才支持的
作者: 剑心    时间: 2006-4-13 13:11

isam,myisam,heap数据表类型不支持事务。
作者: liuzhusuoai    时间: 2006-4-13 13:11

$sql="LOCK  TABLES  lun_topic  write;  
           SELECT  @A:=MAX(iTopicId)  FROM  lun_topic;  
           INSERT  INTO  lun_topic  VALUES(@A+1,主题','内容','作者',NOW(),1);//少了一个单引号  
           UNLOCK  TABLES;";  
基本上是没有错了。不过不具备事务处理机制的,用这种方法有时也不能解决的。
作者: xingyungulang    时间: 2006-4-13 13:12

将数据库类型改为innoDB  

$sql1  =  "set  auto_commite=0";  
$sql2  =  "begin";  
$sql3  =  "update......";  
$sql4  =  "update.......";  
$sql5  =  "commite";  
$sql6  =  "rollback";  

mysql_query($sql1);  
mysql_query($sql2);  
mysql_query($sql3);  
mysql_query($sql4);  
if(mysql_errno)  
       mysql_query($sql5);  
else  
       mysql_query($sql6);




欢迎光临 编程开发论坛 (http://bbs.lihuasoft.net/) Powered by Discuz! 6.0.0