我试图搜索但没有任何作用,我不知道该怎么做。
有一个包含两个外键的表,其中一个可以是null
。根据我搜索过的内容,拥有null外键是完全没问题的。但无论如何,当我尝试在该值中插入null
时,它会失败。它说:
*原因:外键值没有匹配的主键值。
*操作:删除外键或添加匹配的主键。
这是表格的代码。我想要为null的FK是idPedido
CREATE TABLE PAGOS(
fechaLimite DATE,
cuantia NUMBER NOT NULL,
fechaInicio DATE DEFAULT SYSDATE,
fechaLiquidacion DATE,
idPago VARCHAR(8) NOT NULL,
dni VARCHAR(14) NOT NULL,
tipoPago VARCHAR(7) DEFAULT 'OTRO' CHECK(tipoPAGO IN('MENSUAL','PEDIDO','OTRO')),
idPedido VARCHAR2(10),
PRIMARY KEY(idPago),
FOREIGN KEY(dni) REFERENCES MIEMBROS ON DELETE SET NULL,
FOREIGN KEY(idPedido) REFERENCES PEDIDOS ON DELETE SET NULL
);
有一些触发器等可以为idPago值添加序列。 以下是为表创建新项目的过程代码:
create or replace PROCEDURE CREAR_PAGO(
new_fechaLimite IN PAGOS.fechaLimite%TYPE ,
new_cuantia IN PAGOS.cuantia%TYPE,
new_fechaInicio IN PAGOS.fechaInicio%TYPE,
new_fechaLiquidacion IN PAGOS.fechaLiquidacion%TYPE,
new_dni IN PAGOS.dni%TYPE,
new_tipoPago IN PAGOS.tipoPago%TYPE,
new_idPedido IN PAGOS.idPedido%TYPE
)
IS
BEGIN
INSERT INTO PAGOS(fechaLimite,cuantia,fechaInicio,fechaLiquidacion,dni,tipoPago,idPedido) VALUES(new_fechaLimite,new_cuantia,new_fechaInicio,new_fechaLiquidacion,new_dni,new_tipoPago,new_idPedido);
END CREAR_PAGO;
这是我试图插入一个新元素:
execute CREAR_PAGO('01012020',40,'01012010',null,49035480D,null,null);
我已经尝试在idPedido的类型之后在表代码中放置“NULL”和“DEFAULT NULL”,但没有任何作用
我需要帮助
答案 0 :(得分:0)
看起来你的表的主键是idPago,但我在你的insert语句中看不到它。如果是这种情况,那么您的问题似乎是尝试添加没有主键的记录...而不是外键为空。