我不是很喜欢数据库,我在尝试实现一个简单的插入查询时遇到以下问题,该查询将新记录插入到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 ,如果它可以为空?我错过了什么?我该如何解决这个问题?
答案 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以返回值或对其进行注释,所以触发器有效
可能还有其他原因造成错误,除非您向我们展示触发器,否则我们无法帮助您。