SQLite如何获得条件列更新的结果?

热核

因此,我正在使用SQLite为我的存储库在ASP.NET Core中构建一个准系统电子商务网站。我使用所谓的“ ProductInventory”表跟踪商店中产品的库存,该表包含一个称为“ Stock”的整数列。现在,我不再希望库存为负数,因此,即使我在进行更新查询之前已经在软件中进行过检查,仍然有可能两个用户可能在大约同一时间结帐,从而导致两个更新查询可能导致结果为负数。因此,我认为我使用了一个case语句来确定要减去的金额。到目前为止,这是我想出的。

UPDATE [ProductInventory] 
SET [Stock] = CASE WHEN [Stock] >= X Then [Stock] - X Else [Stock] = 0
END WHERE [ID] = 1

在上面的示例中,X是占位符,表示我希望从“库存”列中扣除的金额。

我不知道要如何扣除有关扣除的信息?我的猜测是我在这里使用了错误的SQL查询,或者我完全有错误的主意,我们将不胜感激。

rclocher3

我认为您在树错树,老板。使用数据库事务会更好。在事务中,您可以对多个SQL语句进行分组。所有的语句一起执行,它们一起成功,否则回滚。这是一些C#伪代码:

using (SQLiteConnection conn = new SQLiteConnection(connectionString))
{
  conn.Open();
  using SQLiteTransaction dbTransaction = conn.BeginTransaction())
  {
    if (StockIsAvailable())
    {
      DecreaseStock();
      IncreaseCashBalance();
    }
    dbTransaction.Commit();
  }
}

在我的例子,StockIsAvailable()DecreaseStock(),并且IncreaseCashBalance()是在数据库上执行SQL语句的功能。我的观点是,如果您要使用事务,那么如果您在第一个电子商务事务的中间又要进行另一个电子商务事务,那么第二个电子商务事务将不得不等到第一个数据库事务提交之后。数据库不可能处于无效状态,例如库存量为负数。

祝您电子商务网站好运!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何限制休眠条件 API 获得的结果?

来自分类Dev

Realm Swift如何在结果更新后如何获得通知

来自分类Dev

如何获得满足熊猫条件的列索引?

来自分类Dev

如何获得满足多行条件的列

来自分类Dev

如何更新符合条件的列

来自分类Dev

如何根据条件更新列

来自分类Dev

如何一次获得多个条件的结果

来自分类Dev

如何获得小数结果

来自分类Dev

如何获得理想的结果?

来自分类Dev

如何获得建造结果

来自分类Dev

如何从NLS获得结果

来自分类Dev

如何获得“ For”操作的结果?

来自分类Dev

如何获得HttpRequest的结果?

来自分类Dev

如何通过电子邮件将表结果的更新发送给满足条件的小于0的特定列?

来自分类Dev

如何使用新列更新SQLite表?

来自分类Dev

sqlite如何从变量自动更新列

来自分类Dev

如何从雄辩的单个列和数组中获得独特的结果?

来自分类Dev

如何获得按不同列排序的不同结果?SQL PostgreSQL

来自分类Dev

如何从条件为ROWNUM的SELECT结果中更新?

来自分类Dev

如何使用AND条件更新SQLite数据库中的数据?

来自分类Dev

如何获得条件跨越两行的列值?

来自分类Dev

如何获得条件序列

来自分类Dev

要更新时,如何通过ContentValues使用sqlite更新取决于当前值?如何检索结果?

来自分类Dev

使用.where条件获得大于整数的结果

来自分类Dev

如何选择2个多条件列的结果

来自分类常见问题

如何基于用例在sql中的某些条件获得所需的结果?

来自分类Dev

如何从有条件的另一个实体获得结果?

来自分类Dev

如何获得寓言的承诺结果

来自分类Dev

如何获得setTimeout函数的结果?