我有一個簡單的電力系統之間轉移信用分數,因爲用戶可以借到對方:Mysql的交易,用戶
mysql_query("INSERT INTO power (sender, receiver, amount)
VALUES ('$sender', '$receiver', '$amount')");
mysql_query("UPDATE users SET power=power-$amount WHERE user_id='$sender'");
mysql_query("UPDATE users SET power=power+$amount WHERE user_id='$receiver'");
我檢查,如果發送方有足夠的信用額度由SELECT
查詢運行上文前轉移上述一組查詢。
問題1:我認爲,最好把所有這四個查詢放到一個Transaction
;因爲InnoDB ACID將保證更安全的性能。什麼是最好的交易呢?
問題2:功率爲unsigned int
。如果有機會(甚至不太可能),用戶沒有足夠的信用額度power-$amount
將不會設置0;相反,它將循環通過int()的最大值,即4294967295.這意味着用戶將被授予幾乎無限的權力(信用)。
非常翔實的答案...我學到了很多! – Googlebot 2012-02-17 08:33:19
@Ali:很酷,這就是爲什麼我們都在這裏:) – 2012-02-17 08:48:30