【问题标题】:Oracle update query ignore primary constraintOracle 更新查询忽略主约束
【发布时间】:2012-12-21 19:52:32
【问题描述】:

我有一个像下面这样的表 AreaUser。

area   user
------------
area2  user1
area2  user2
area3  user1

(area,user) 是一个pk

我执行如下查询

update areatable
set user = 'user2'
where user = 'user1'

第一行更新引发主键约束错误,第三行未更新。我如何忽略第一行错误并继续更新第三行 或者 在更新该行之前,我如何才能找到(区域,用户)组合是否已经存在于表中。

希望我用这个例子清楚地说明了这个问题。提前感谢您的帮助。

【问题讨论】:

    标签: oracle


    【解决方案1】:

    你需要一个NOT EXISTS,例如

    Update AreaTable
       Set User = 'user2'
     Where User = 'user1'
       And Not Exists (Select 1
                         From AreaTable CheckAreaTable
                        Where CheckAreaTable.Area = AreaTable.Area
                          And CheckAreaTable.User = 'user2')
    

    【讨论】:

    • 不客气。刚刚注意到我的'User2' 应该是'user2' 即显然注意区分大小写。
    • :) 没关系。这只是我真实场景的一个例子。在我的真实场景中,用户实际上是用户 ID,一个数字数据类型
    猜你喜欢
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多