当前位置: 代码迷 >> Oracle开发 >> update 语句有关问题
  详细解决方案

update 语句有关问题

热度:84   发布时间:2016-04-24 06:42:30.0
update 语句问题
今天写个事务,然后故意写错了测试一下,然后就是发现个问题,update cardinfo set cardsta=‘1’ where cardno=‘000000’。
这条语句没问题 问题是cardinfo表里并没有000000这张卡,但是语句跑通了,还可以commit。有没有人知道这是怎么回事,什么原理,不是应该提示查不到此卡吗?
------解决方案--------------------
如果没有这条语句的话就是0 Rows updated,不会报错的,这跟语法没什么关系的,DELETE 也是同样的原理
------解决方案--------------------
where条件是确定影响的行数。
如果影响行数为0算错的话,那开发就没法做了。。也没必要。。
而且不能执行是不合理的,oracle只有真正跑的过程才知道语句影响了哪些行。。
------解决方案--------------------
引用:
Quote: 引用:

如果没有这条语句的话就是0 Rows updated,不会报错的,这跟语法没什么关系的,DELETE 也是同样的原理

就是说update和delete只要语法ok,字段ok,就执行,不会半段数据是否存在?

对,没有满足条件的行的话,影响的行数就是0,否则就按照where条件影响记录。
只要sql语法正确,执行么问题。。
------解决方案--------------------
这个没问题。update 后返回的update个数为0 ,没有更新到数据,你当然可以commit,如果这个一个事物,前面有insert、update之类的commit就不丢失数据了。
如果不commit 之前的就不能commit,当然这是业务规则正确的情况下。
  相关解决方案