ORA-01400: 无法将 NULL 插入 ("CHARGE_WQRL"."SF_JMQTFY_T"."BH")

[ERROR] JmCheckManageDaoImpl:901 - java.sql.SQLException: ORA-01400: 无法将 NULL 插入 ("CHARGE_WQRL"."SF_JMQTFY_T"."BH")

这个问题很多时候是没有为该表建立触发器(trigger)导致的,或者是序列(sequence)没建立,查看一下,确保两个都要有。

这是建立sequence

create sequence SF_JMQTFY_S
minvalue 1
maxvalue 999999999999999999999999999
start with 1
increment by 1
cache 20;

建立trigger

CREATE OR REPLACE TRIGGER "CHARGE_WQRL"."SF_JMQTFY_TR" BEFORE INSERT ON SF_JMQTFY_T FOR EACH ROW
DECLARE
BEGIN
  SELECT SF_JMQTFY_S.NEXTVAL INTO :NEW.BH FROM DUAL;
END;

 

附:出现问题的存储过程,可以看到SF_JMJC_T的BH是声明了的,直接从序列获取,而SF_JMQTFY_T的BH是没有声明的,如果不使用触发器调用是无法赋值的。

  --设置稽查表的sequence
  SELECT SF_JMJC_S.NEXTVAL INTO V_BH FROM DUAL;
  --稽查表插入信息
  INSERT INTO SF_JMJC_T
    (BH, CNQ, YHBH, JCDZ, YRSJ, YSFMJ, SFMJ, YGNZT, GNZT, YSFLB, SFLB, CLJG,
     JCR, JCRQ, WYJ, CZY, BZ,QFJE)
  VALUES
    (V_BH, V_CNQ, V_YHBH, V_JCDZ, V_YRSJ, V_YSFMJ, V_SFMJ, V_YGNZT, V_GNZT,
     V_YSFLB, V_SFLB, V_CLJG, V_JCR, V_JCRQ, V_WYJ, V_CZY, V_BZ,V_WYJ);
  --其他费用表插入信息(违约金>0时将其插入欠费金额)
  IF V_WYJ >= 0 THEN
    INSERT INTO SF_JMQTFY_T
      (CNQ, YHBH, FYBH, YSJE, QFJE, FYLB,YWBH)
    VALUES
      (V_CNQ, V_YHBH, 0, V_WYJ, V_WYJ, '违约金',V_BH);
  END IF;

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-01400: 无法NULL 插入是指在向数据库插入数据时,违反了非空约束,即将 NULL插入了不允许为空的列中。 这通常发生在插入或更新数据时,对某个列进行了赋值为 NULL 的操作,而该列在数据库中被定义为不允许为空。这样的操作会触发数据库引发 SQLIntegrityConstraintViolationException 异常。这个异常信息中包含了具体的错误信息 ORA-01400。在这种情况下,你需要检查你的代码或者数据库表结构,确保在插入数据时不会将 NULL 值赋值给不允许为空的列。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [java.sql.SQLIntegrityConstraintViolationException](https://blog.csdn.net/zhao2chen3/article/details/122875564)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Cause: java.sql.SQLIntegrityConstraintViolationException: Column ‘businessName‘ cannot be null](https://blog.csdn.net/Silly011/article/details/119580160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Caused by: java.sql.SQLIntegrityConstraintViolationException: Cannot delete or update a parent row:](https://download.csdn.net/download/weixin_38500572/13684759)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值