【问题标题】:Sql UPDATE STATEMENT oracleSql UPDATE STATEMENT oracle
【发布时间】:2015-01-14 09:04:55
【问题描述】:

我需要在我的数据库中更新一个数量。我尝试了更新语句,(触发oracle,不工作,因为肯定有问题)

我的sql字符串是:

String sql1 = "update book set qty = qty - 1 where isbn='" + txt_carr.getText() + "'";  

txt_carr 是一个 txtField,我在其中写了一个 isbn(用于添加购物车),但对于精确的 ISBN,数量不会改变。

同样在购物车中关闭程序时,应该更新数量(即使是固定的,比如5个)

我试过了:

String sql3= "UPDATE book SET quantity= 5 (select isbn cart where isbn=) ";  

isbn = 您购物车中的所有 isbn。所以它应该只更新购物车中书籍的数量(在表书中),而不是全部。

我知道触发器会更好,但不知道如何编写。

【问题讨论】:

  • 那么这个叫什么?你在执行提交吗?如果您获取更新字符串并从 sqlplus 或其他 sql 客户端运行它会怎样?
  • @OldProgrammer 对我来说触发很困难。这就是为什么我只想更新 sql 命令。有可能吗?
  • @GordonLinoff 在论坛上写错误。查询是正确的。但仍然无法正常工作。 update book set qty = qty - 1 where isbn='" + txt_carr.getText() + "'";为什么不更新数量?

标签: sql oracle update-statement


【解决方案1】:

试试这个:

UPDATE book b   SET b.quantity =
      (SELECT COUNT (*)
         FROM cards c
        WHERE c.isbn = b.isbn) WHERE b.isbn = 'YOUR_ISBN';

所以你的代码将是:

String sql1= "UPDATE book b SET b.quantity =(SELECT COUNT (*) FROM card c WHERE c.isbn = b.isbn) WHERE b.isbn = '" + txt_carr.getText() + "' "; 

不是:我不确定表名。

【讨论】:

  • 谢谢,我解决了设置数量=5。但是问题仍然存在,基于 txtField 中插入的 isbn 数量减少。
  • @neo999,你从哪里得到你想要减去的金额?
  • @neo999 你能发布你的错误吗?可能是您在 COMMIT 之前有 ROWLOCK,或者您的“txt_carr”为空或需要检查 txt_carr.getText()
  • 完美!!!问题是txt_carr因为当时是null,我解决的非常非常简单!!!谢谢
【解决方案2】:

SQL 语法无效:

String sql3= "UPDATE book SET quantity= '5' where book.isbn = 'YOUR_ISBN'";  

【讨论】:

  • "YOUR ISBN" 应该把table cart 中的所有ISBN 恢复到table book 中的数量。我能怎么做?谢谢
猜你喜欢
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
  • 2021-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多