要想使用事务必须使用innodb表或bdb表 ---------手册--------------- 如果你使用事务安全表 (例如 InnoDB、BDB),通过下面的命令,你可以设置 MySQL 为非 autocommit 模式: SET AUTOCOMMIT=0在此之后,你必须使用 COMMIT 来存储你的更改到磁盘上,或者使用 ROLLBACK ,如果你希望忽略从你的事务开始所做的更改。 如果你希望为一系列语句从 AUTOCOMMIT 模式转换,你可以使用 START TRANSACTION 或 BEGIN 或 BEGIN WORK 语句: START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summmary=@A WHERE type=1; COMMIT;
先插入记录(表1)。 然后:(将新插入的ID号取出来并插入另一个表(表2)中。) insert into 表2(ID) select ID from 表1 order by ID desc limit 0,1
各位大侠,我试过了 last_insert_id() 是可以的 但小弟确实很愚笨不知道怎么样在PHP代码中开始和提交一个事务START TRANSACTION; SELECT @A:=SUM(salary) FROM table1 WHERE type=1; UPDATE table2 SET summmary=@A WHERE type=1; COMMIT; 这样的语法好像是在mysql中进行的吧请各位大侠给指条明路吧
在PHP中执行SQL查询就可以了啊mysql_query("START TRANSACTION"); mysql_query("SELECT @A:=SUM(salary) FROM table1 WHERE type=1"); mysql_query("UPDATE table2 SET summmary=@A WHERE type=1"); mysql_query("COMMIT");
---------手册---------------
如果你使用事务安全表 (例如 InnoDB、BDB),通过下面的命令,你可以设置 MySQL 为非 autocommit 模式: SET AUTOCOMMIT=0在此之后,你必须使用 COMMIT 来存储你的更改到磁盘上,或者使用 ROLLBACK ,如果你希望忽略从你的事务开始所做的更改。 如果你希望为一系列语句从 AUTOCOMMIT 模式转换,你可以使用 START TRANSACTION 或 BEGIN 或 BEGIN WORK 语句: START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
就是取得刚插入的ID
然后:(将新插入的ID号取出来并插入另一个表(表2)中。)
insert into 表2(ID) select ID from 表1 order by ID desc limit 0,1
last_insert_id() 是可以的
但小弟确实很愚笨不知道怎么样在PHP代码中开始和提交一个事务START TRANSACTION;
SELECT @A:=SUM(salary) FROM table1 WHERE type=1;
UPDATE table2 SET summmary=@A WHERE type=1;
COMMIT;
这样的语法好像是在mysql中进行的吧请各位大侠给指条明路吧
mysql_query("SELECT @A:=SUM(salary) FROM table1 WHERE type=1");
mysql_query("UPDATE table2 SET summmary=@A WHERE type=1");
mysql_query("COMMIT");
如果同意的话就给分了PHP真是奇怪asp怎么着也需要Conn.BeginTrans,Conn.CommitTrans这样的语句
java中怎么着也需要conn.setAutoCommit(false)这样的语句PHP却要这样弄mysql_query("START TRANSACTION");看来我对PHP了解的太少了
学习中......
要根据所做的操作没有出错才能决定要进行提交还是回滚操作
如何得知所作的操作有没有出错(所用数据库为MYSQL4.0.21,不支持error_count)
例如java中有
try{
}catch(Exception e){
}
语句,不知PHP中改如何判断
如果得到答案就马上结贴
如果用着不舒服可以自己去封装.
php4里可以用set_error_handle
如果同意的话就给分了-----------寻梦的稻草人的方法当然是没错的了,但楼主为什么不自己试一下是否
合你所用呢?不管学什么东西,个人认为,不应该完全相信别人给你的东西,
应该自己多试一下,就算是别人给你的是完全正确的,也不要拿来就用,应该
自己多试一下,研究一下,这样进步才快:)另,祝楼主早日成为PHP高手来的
java中怎么着也需要conn.setAutoCommit(false)这样的语句PHP却要这样弄mysql_query("START TRANSACTION");
--------------------
其实PHP5的mysqli扩展已经不用这么使用事务了,
它提供了一种更方便的面向对象方法,
也有点类似JAVA了,
详情请参考http://www.php.net/manual/en/function.mysqli-commit.php