方法一 利用ASP内置ADO组件中的Connection对象可以实现对数据库操作的事务性处理。Connection对象的部分方法如下: ●Connection.BeginTrans方法:启动一个事务; ●Connection.CommitTrans方法:完成/提交一个事务; ●Connection.RollBackTrans方法:撤消/放弃一个事务。 //启动一个事务操作 Conn.BeginTrans sqlText=“Insert into USER(userName,userPasswd) values(‘” sqlText=sqlText & request(“usrName”) & “’,‘”&request(“usrPasswd”)&“’) ” conn.execute(sqlText) if conn.Errors.Count>0 then conn.Errors.Clear //如果插入数据操作失败,则事务向前回滚 conn.RollBackTrans response.Redirct RegisterFail.html end if sqlText=“Insert into USERDOC(userName,Age,Sex,PhoneNumber,Address) ” sqlText=sqlText & “values(‘”& request (“usrName”) & “’, ” & request(“Age”) sqlText=sqlText & “,‘” & request (“PhoneNum”) & “’,‘” sqlText=sqlText & request(“Address”) & “’) ” //执行事务单元中的第二条插入语句 conn.execute(sqlText) if conn.Errors.Count>0 then conn.Errors.Clear //如果操作失败,则事务向前回滚 conn.RollBackTrans response.Redirct RegisterFail.html end if //如果整个事务操作执行正确,则提交事务 Conn.CommitTrans //转向注册成功处理页面 response.Redirct RegisterOk.html
如果 chk==true 就执行第二个表 成功chk2==true;否则chk2=false;
如果 chk2==false 就执行把第一个表刚插入的数据删除。(根据索引)
(rollback)
commit不行么?
在php编程中不可以,我很久前就试过了
现在还不知道怎么用php做事务处理呢,寻找中……
希望高人不吝赐教
我是真的看不明白
$db->query("START TRANSACTION");
$sql="...";
$a=$db->query($sql);
if(isError($a))
{
$db->query("ROLLBACK");
return false;
}
$sql="..";
$a=$db->query($sql);
if(isError($a))
{
$db->query("ROLLBACK");
return false;
}
$db->query("COMMIT");