如果特定字段值设置为null,为什么我无法执行此插入查询?

时间:2015-06-16 13:08:48

标签: sql database oracle oracle11g rdbms

我不是很喜欢数据库,我在尝试实现一个简单的插入查询时遇到以下问题,该查询将新记录插入到Oracle数据库中。

所以我的表格有以下结构:

DESCRIBE FLUSSO_XMLSDI

Nome           Nullo    Tipo         
-------------- -------- ------------ 
NUMERO_FATTURA NOT NULL VARCHAR2(15) 
DATA_EMISSIONE          DATE         
XML                     CLOB         
PFK_PIVA                VARCHAR2(16) 
PDF                     VARCHAR2(1)  

因此,您可以看到此表的最后一个字段名为 PDF ,它是可以为空,并且它有1个字符作为长度(定义为 VARCHAR2(1 BYTE)但我认为这意味着它只能包含一个字符。)

所以我的问题是,如果我这样做:

INSERT INTO FLUSSO_XMLSDI (NUMERO_FATTURA, DATA_EMISSIONE, XML, PFK_PIVA, PDF) 
       VALUES (004600002149, date'2015-03-16', 'TEST' , 80003690668, 'S');

可行,新记录已正确插入 FLUSSO_XMLSDI 表格。

但是当我尝试这样做时(将 PDF 字段设置为** null):

INSERT INTO FLUSSO_XMLSDI (NUMERO_FATTURA, DATA_EMISSIONE, XML, PFK_PIVA, PDF) 
       VALUES (004600002149, date'2015-03-16', 'TEST' , 80003690668, null); 

我收到以下错误消息:

Errore con inizio alla riga 1 nel comando:
INSERT INTO FLUSSO_XMLSDI (NUMERO_FATTURA, DATA_EMISSIONE, XML, PFK_PIVA, PDF) 
       VALUES (004600002149, date'2015-03-16', 'TEST' , 80003690668, null)
Report errori:
Errore SQL: ORA-01403: no data found
ORA-06512: at "EDIWEA.TRI_P_FLUSSO", line 10
ORA-04088: error during execution of trigger 'EDIWEA.TRI_P_FLUSSO'
01403. 00000 -  "no data found"
*Cause:    
*Action:

为什么我不能将 PDF 字段值指定为 null ,如果它可以为空?我错过了什么?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

此类错误List<String> periods = db.getPeriods(todayDate); Map<String, Map<Integer, User>> hm = new HashMap<>(); periods.parallelStream().forEach(s -> { eligibleUsers = // getEligibleUsers(); hm.put(s, eligibleUsers.parallelStream().collect( Collectors.toMap(UserTable1::getId,createUserForId(UserTable1:getId)) }); ); //

private User createUserForId(Integer id){
        db.findByUserId(id);

        //...

         User user = new User();
        user.setUserId(userId);
        user.setFullName(emp.getFullName());
        return user;
    }

可能是由no data found及其返回的空值引起的,select应该将记录返回到b添加到变量中,因此您要么调整select以返回值或对其进行注释,所以触发器有效

可能还有其他原因造成错误,除非您向我们展示触发器,否则我们无法帮助您。