2012-07-18 27 views
1

所以我有這個數據庫表「userDeck」,有三列:idUser,idCard,金額。金額是一個計數器,用於跟蹤用戶添加特定卡的卡數。現在我正在使用此查詢:列到達0時刪除整行?

$query1 = "UPDATE userDeck SET amount=amount-$amount WHERE idCard=$idCard"; 
$result2 = mysql_query($query1) or die(mysql_error()); 

當用戶想要刪除他/她添加的卡時。

這工作得很好,除非你刪除了比你列出的更多的卡,它會繼續低於0。我想它的時候量達到0.1

回答

1

刪除行您可以添加以下語句:

DELETE FROM userDeck WHERE idCard=$idCard and amount = 0 
更新後立即

$query1 = "DELETE FROM userDeck WHERE idCard=$idCard and amount = 0"; 
$result2 = mysql_query($query1) or die(mysql_error()); 
+0

謝謝!使用此除了我添加金額<= 0,以防止該值低於0,它似乎工作正常! – Nilsson 2012-07-18 13:40:14

0

兩種方式

  1. 使用「應用控制」在PHP的水平,不給刪除該卡
  2. 使用WHERE條件,以排除那些有一個amount = 0記錄用戶的能力
+0

用於觸發器。 – 2012-07-18 13:29:53

+0

一個觸發器不會這樣做,因爲如果正在處理,它將無法影響到同一個表。 – 2012-07-18 13:30:20

+0

@ShlomiNoach現在關於循環引用,但這是一個更新 - >刪除序列...仍然「有效」這個概念? – DonCallisto 2012-07-18 13:33:27

0
$query1 = "UPDATE userDeck SET amount=amount-$amount WHERE idCard=$idCard"; 
$result2 = mysql_query($query1) or die(mysql_error()); 

然後,您可以後運行此:

$query_del = "DELETE FROM userDeck WHERE idCard=$idCard AND amount = 0"; 
mysql_query($query_del) or die(mysql_error()); 
0
DELETE FROM userDeck WHERE amount<=0 
0

除了由Gordon提供的解決方案,也考慮改變的amount類型UNSIGNED(假設它是一個整數型),具有沿strict sql_mode

如果您嘗試將值設置爲負值,則會引發錯誤。