当列达到0时删除整行?

时间:2012-07-18 13:25:28

标签: mysql sql

所以我有这个数据库表“userDeck”,有三列:idUser,idCard,amount。金额是一个计数器,用于跟踪用户添加了特定卡的卡数。现在我正在使用这个查询:

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

当用户想要删除他/她添加的卡片时。

这项工作正常,但如果您删除的卡多于列出的卡,则会继续低于0。我希望它在金额达到0时删除该行。

5 个答案:

答案 0 :(得分: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()); 

答案 1 :(得分:0)

两种方式

  1. 在php级别使用“应用程序控件”,并且不允许用户删除该卡
  2. 使用where条件排除那些具有amount = 0
  3. 的记录

答案 2 :(得分: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());

答案 3 :(得分:0)

DELETE FROM userDeck WHERE amount<=0

答案 4 :(得分:0)

除了Gordon提供的解决方案之外,还要考虑将amount的类型更改为UNSIGNED(假设它是INTEGER类型),以及strict sql_mode

如果您尝试将值设置为负值,则会引发错误。

相关问题