Sql 如果特定字段值设置为null,为什么我不能执行此插入查询?
我对数据库不太感兴趣,在尝试实现一个简单的插入查询(将新记录插入到Oracle数据库中)时遇到以下问题 因此,我的表具有以下结构:Sql 如果特定字段值设置为null,为什么我不能执行此插入查询?,sql,database,oracle,oracle11g,rdbms,Sql,Database,Oracle,Oracle11g,Rdbms,我对数据库不太感兴趣,在尝试实现一个简单的插入查询(将新记录插入到Oracle数据库中)时遇到以下问题 因此,我的表具有以下结构: DESCRIBE FLUSSO_XMLSDI Nome Nullo Tipo -------------- -------- ------------ NUMERO_FATTURA NOT NULL VARCHAR2(15) DATA_EMISSIONE DATE XML
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个字符,它被定义为VARCHAR21字节,但我认为这意味着它只能包含一个字符
所以我的问题是如果我这样做:
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,为什么我不能将其指定为null?我错过了什么?如何解决此问题?此类型的错误未找到数据
可能是由于select*into变量从dual及其返回空值引起的,select应将添加到变量的记录返回到b,因此您必须调整select以返回值或对其进行注释,以便触发器工作
该错误可能还有其他原因,除非您向我们展示触发器,否则我们无法帮助您。表中有一个触发器:EDIWEA.TRI_p_FLUSSO。它的作用是什么?在触发器EDIWEA.TRI_P_FLUSSO中,可能有一些SELECT…INTO语句在PDF字段为空时不给出结果。当表架构允许为空时,似乎有一个触发器对期望值的列中的值进行操作。要么需要重写触发器以处理空值,要么应该更改表架构(如果可能的话)以首先不允许它们。
ORA-04088: error during execution of trigger 'EDIWEA.TRI_P_FLUSSO'