Oracle SQL:UPDATE,但如果不满足条件,则抛出“错误”

破坏者

抱歉,这是骗人的-我搜索了类似的问题,但它们似乎都符合条件更新的原则,您可以在其中使用CASE语句将列设置为多个值之一。

我有一条SQL UPDATE语句,但是有两个我为什么不希望它更新的原因:

  1. 找不到该项目(导致rowsUpdated为0)
  2. 如果满足条件

我想以某种方式区分这两个状态,这就是为什么我不能只将条件放在WHERE子句中的原因。

当前看起来像这样:

UPDATE MY_TABLE t 
   SET t.TITLE = :TITLE,
       t.TYPE = :TYPE,
       t.STATE = :STATE,
       t.UPDTIME = :UPDTIME
 WHERE t.ITEM_ID = :ITEM_ID 
   AND exists (SELECT t.ITEM_ID
                FROM MY_TABLE t, USERINFO ui
               WHERE ui.USERID = t.USERID
                 AND ui.USERNAME = :USERNAME
                 AND t.ITEM_ID = :ITEM_ID);

如果找到(并更新)MY_TABLE与给定的USERNAME和ITEM_ID匹配的项,则返回1;否则返回0。

我想添加一些内容,以便它不会在if时更新t.STATE = 'READ_ONLY',但是为了使该条件与“该项目不存在”条件区分开来。也许抛出某种错误?

我可以SELECT在更新前运行一条语句,以确保该项目的状态不是READ_ONLY,但这似乎很浪费。有没有更好的办法?

费利佩·莫雷诺

我认为先前的SQL并不浪费。仅仅为了捕获条件而抛出错误将是令人困惑的(如果您的实际更新抛出相同的错误除以零错误会怎样?)。您可以选择进行更新,然后使用rowid更新它,以加快使用堆表的速度:

SELECT t.ITEM_ID, t.condition, t.rowid
FROM MY_TABLE t, USERINFO ui
WHERE ui.USERID = t.USERID
AND ui.USERNAME = :USERNAME
AND t.ITEM_ID = :ITEM_ID for update;

如果满足条件,则只需按rowid更新表

update MY_TABLE
set ...
where rowid = :rowid

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果不满足条件,则引发错误,如果不满足,则运行过程

来自分类Dev

如果条件不满足则跳过迭代

来自分类Dev

“不满足”条件

来自分类Dev

不断抛出异常,即使它不满足条件

来自分类Dev

Oracle Installer:[INS-13001]环境不满足最低要求

来自分类Dev

SQL Server:如果不满足条件,如何默认返回1行

来自分类Dev

Swift:如果条件不满足,请勿执行Segue

来自分类Dev

如果不满足条件怎么办?

来自分类Dev

如果不满足条件,但代码仍然执行

来自分类Dev

如果不满足条件,则JavaScript停止脚本

来自分类Dev

如果不满足条件,如何防止脚本崩溃?

来自分类Dev

如果不满足条件则执行While循环

来自分类Dev

如果语句条件不满足,则使用Javascript?

来自分类Dev

如果不满足条件,则单击时跳过元素

来自分类Dev

如果不满足条件,但代码仍然执行

来自分类Dev

Swift:如果条件不满足,请勿执行Segue

来自分类Dev

VBA代码如果条件不满足,则Stlll进入循环

来自分类Dev

如果不满足“ If”条件,如何结束代码

来自分类Dev

如果使用 Or 关键字不满足条件

来自分类Dev

如果不满足条件,则停止 while 循环

来自分类Dev

如果不满足 WHERE 条件,则 SELECT DISTINCT 任何值

来自分类Dev

如果条件不满足,如何使存储过程失败

来自分类Dev

不满足pthread条件

来自分类Dev

控制台中不满足条件的错误

来自分类Dev

如果满足条件,则使用Vlookup;如果不满足,则使用vlookup

来自分类Dev

如果条件在Oracle SQL中

来自分类Dev

值如果不满足则匹配:S

来自分类Dev

如果即使不满足也执行

来自分类Dev

如何描述要满足的条件,如果不满足,请继续浏览清单

Related 相关文章

热门标签

归档