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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM