Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Clave Foranea se repite muchas veces (https://www.clubdelphi.com/foros/showthread.php?t=90423)

ryderMX 05-06-2016 06:05:25

Clave Foranea se repite muchas veces
 
Buenas, tengo la siguiente situacion y nosé a que se debe, el tema es que en una de mis tablas al crear una clave foranea, ésta se repite muchas veces, por ahora no ha dado problema pero es claro que no es normal, abajo les dejo el metadata de la tabla que está en la base.
Cita:

/* Table: ITEMCOMPROBPAGO, Owner: SYSDBA */

CREATE TABLE "ITEMCOMPROBPAGO"
(
"IDPAGO" INTEGER NOT NULL,
"ITEM" INTEGER NOT NULL,
"IDCOMPROB" INTEGER NOT NULL,
"IMPORTE" DOUBLE PRECISION,
"IDPAGOADELANTO" INTEGER NOT NULL,
PRIMARY KEY ("IDPAGO", "IDCOMPROB", "ITEM")
);
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDCOMPROB") REFERENCES "COMPROBANTES" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
ALTER TABLE "ITEMCOMPROBPAGO" ADD FOREIGN KEY ("IDPAGOADELANTO") REFERENCES "COMPROBPAGO" ("ID");
SET TERM ^ ;


/* Triggers only will work for SQL triggers */

CREATE TRIGGER "ITEMCOMPROBPAGO_AI" FOR "ITEMCOMPROBPAGO"
ACTIVE AFTER INSERT POSITION 0
AS
BEGIN
UpDate Comprobantes Set Pagado=Pagado+New.Importe Where Id=New.IdComprob ;
END
^

CREATE TRIGGER "ITEMCOMPROBPAGO_AU" FOR "ITEMCOMPROBPAGO"
ACTIVE AFTER UPDATE POSITION 0
AS
BEGIN
UpDate Comprobantes Set Pagado=Pagado-Old.Importe Where Id=Old.IdComprob ;
UpDate Comprobantes Set Pagado=Pagado+New.Importe Where Id=New.IdComprob ;
END
^

CREATE TRIGGER "ITEMCOMPROBPAGO_BD" FOR "ITEMCOMPROBPAGO"
ACTIVE AFTER DELETE POSITION 0
AS
BEGIN
UpDate Comprobantes Set Pagado=Pagado-Old.Importe Where Id=Old.IdComprob ;
END
^

COMMIT WORK ^
SET TERM ;^

Casimiro Notevi 05-06-2016 09:13:19

:confused::confused::confused: ¿Cómo puede ser?


La franja horaria es GMT +2. Ahora son las 00:18:42.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi