weixin_47957706 2024-02-02 18:06 采纳率: 0%
浏览 8

Oracle 12 update 奇葩问题

Oracle 12 update 奇葩问题, 已困扰2天了:

单独更新1-node_type能够成功,单独更新2-handler_type也能够成功,
两个列同时更新(不论怎么调换更新顺序),2-handler_type直接被清空为NULL,
请大师指点

img

单独select也没问题

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-02-02 18:08
    关注

    引自免费微信小程序:皆我百晓生

    针对您在Oracle 12中遇到的update问题,当尝试同时更新node_typehandler_type时,后者会被清空为NULL,请允许我提供以下几种可能的问题排查方案:

    方案一:检查触发器与约束

    1. 检查触发器:在Oracle数据库中,如果存在针对UPDATE操作的触发器,它可能会在执行UPDATE后更改或清空handler_type。请确认是否存在这样的触发器,并查看其逻辑。
    -- 查询相关表上的DML触发器
    SELECT TRIGGER_NAME, TRIGGER_TYPE, ACTION_STATEMENT FROM USER_TRIGGERS
    WHERE TABLE_NAME = 'YOUR_TABLE_NAME' AND TRIGGERING_EVENT = 'UPDATE';
    
    1. 检查约束:确保没有定义会导致handler_type字段在特定条件下自动清空的CHECK或DEFERRABLE约束。

    方案二:事务与并发问题

    1. 并发更新冲突:如果存在并发更新的情况,有可能是事务隔离级别或者锁的问题导致更新丢失。检查是否有其他会话正在更新同一行数据。

    方案三:UPDATE语句问题

    1. UPDATE语法错误或逻辑错误:请提供您的UPDATE语句以供分析。确保没有逻辑错误,例如误用了别名或关联查询等可能导致handler_type被错误地设置为空。
    -- 示例UPDATE语句(请替换实际表名和字段)
    UPDATE YOUR_TABLE
    SET node_type = 'new_node_type', handler_type = 'new_handler_type'
    WHERE some_condition;
    
    1. 隐式转换或其他SQL陷阱:确认在更新过程中不存在隐式类型转换,这可能导致handler_type在特定条件下被视为NULL。

    解决方案四:测试与排除法

    1. 逐步测试:先尝试只更新一个字段,然后立即再更新另一个字段,看是否能复现问题。这样可以帮助确定是否由某种依赖关系引起的问题。

    如果以上方案都不能解决您的问题,请提供更多关于您的环境、表结构、索引、触发器、约束以及具体的UPDATE SQL语句等相关信息,以便进行更深入的诊断。

    评论

报告相同问题?

问题事件

  • 修改了问题 2月2日
  • 创建了问题 2月2日

悬赏问题

  • ¥15 esp32驱动GC9A01循环播放视频
  • ¥15 惠普360g9的最新bios
  • ¥30 这个功能用什么软件发合适?
  • ¥60 微信小程序,取消订单,偶尔订单没有改变状态
  • ¥15 用pytorch实现PPO算法
  • ¥15 关于调制信号的星座图?
  • ¥30 前端传参时,后端接收不到参数
  • ¥15 这是有什么问题吗,我检查许可证了但是显示有呢
  • ¥15 机器学习预测遇到的目标函数问题
  • ¥15 Fluent,液体进入旋转区域体积分数不连续