2017-05-05 17 views
0

検索しようとしましたが、何も動作せず、何をすべきかわかりません。 2つの外部キーを持つテーブルがあり、そのうちの1つは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); 

を「NULL」と「DEFAULTのNULL」テーブルコード内idPedidoの種類と何が

に動作した後、私はそれはあなたのトンの主キーのように見えます

+1

あなたはどのRDBMSを使用していますか? –

+0

行/テーブルには8列ありますが、挿入式には7列しかありません。 – philipxy

+0

ポストで述べたように、私は、挿入がトリガされたときに自動的にidPagosを生成するトリガを使用します。私は私のプロジェクトのすべての他のテーブルでこれを使用し、それは正常に動作します。私はnull FKを追加する理由は何ですか? – Lacters

答えて

0

を助けが必要ください。できますidPagoですが、私はあなたの挿入ステートメントでは表示されません。その場合、プライマリキーがないレコードを追加しようとしているようですが、外部キーがnullではありません。

+0

ポストで述べたように、私は、挿入がトリガーされたときに、自動的にidPagosを生成するトリガーを使用します。私は私のプロジェクトのすべての他のテーブルでこれを使用し、それは正常に動作します。私はnull FKを追加する理由は何ですか? – Lacters

関連する問題