Przeczytałem ze w tym dziale najszybciej ktoś udzieli mi pomocy.
Napisałem już na forum posta w innym dziale kilka dni temu i do tej pory nie uzyskałem chociaż post był czytany ponad 100 razy.
Po krótce przedstawiam problem,
Napisałem bazę danych wydawałoby się wszystko jest na swoim miejscu ale gdy próbowałem ją potestować we flamerobinie zaczęły się małe schody. Nie moge znaleźć własnego błędu jak to często bywa. Przez niedziałający triger nie mogę ruszyć dalej a błędu nie mogę znaleźć.Chodzi o triger WYP_INSERT na końcu. Linia i błąd który niby przeszkadza pokazany strzałą. Przesyłam skrypt do miejsca w którym przestaje działać.
Proszę o pomoc.
/----------------------------------------------------------------------------------------- /*tablele*/ /*-----------------------------------------------------------------*/ CREATE TABLE "MSC" ( "Id" int NOT NULL, "Miasto" varchar (30) NOT NULL, PRIMARY KEY("Id") ); CREATE TABLE "DANE" ( "Id" int NOT NULL, "Imie" varchar(32) NOT NULL , "Nazwisko" varchar (32) NOT NULL , "Adres" varchar (100) NOT NULL, "Miasto" int NOT NULL REFERENCES "MSC"("Id") ON UPDATE cascade ON DELETE no action, PRIMARY KEY("Id") ); CREATE TABLE "RODZ" ( "Id" integer NOT NULL, "Rodzaj" varchar (32) NOT NULL, PRIMARY KEY("Id") ); CREATE TABLE "MAR" ( "Id" integer NOT NULL, "Marka" varchar (60) NOT NULL, PRIMARY KEY("Id") ); CREATE TABLE "KOL" ( "Id" int NOT NULL, "Kolor" varchar (30) NOT NULL, PRIMARY KEY("Id") ); CREATE TABLE "SAMO" ( "Id" int NOT NULL, "Marka" int NOT NULL REFERENCES "MAR"("Id") ON UPDATE cascade ON DELETE no action, "Id_Rodz" integer NOT NULL REFERENCES "RODZ"("Id") ON UPDATE cascade ON DELETE SET NULL, "Kolory" int NOT NULL REFERENCES "KOL"("Id") ON UPDATE cascade ON DELETE no action, "Data_prod" numeric(4,0) NOT NULL, "Cena" numeric(5,2) NOT NULL, "Uwagi" varchar (50), PRIMARY KEY ("Id") ); CREATE TABLE "WYP" ( "Id" integer NOT NULL, "Id_Dane" integer NOT NULL REFERENCES "DANE"("Id") ON UPDATE cascade ON DELETE no action, "Id_Samochod" integer NOT NULL REFERENCES "SAMO"("Id") ON UPDATE cascade ON DELETE no action, "Od" timestamp NOT NULL, "Do" timestamp, "Kara" numeric (5,2), PRIMARY KEY("Id") ); /*----------------------------------------------------------------------------------------------*/ /*genratory*/ CREATE generator "DANE_GEN"; SET generator "DANE_GEN" TO 0; SET term ^; CREATE TRIGGER "DANE_INSERT" FOR "DANE" before INSERT AS begin IF (new."Id" IS NULL) then new."Id" = gen_id("DANE_GEN",1); end ^ SET term ;^ /*--------------------------------------*/ CREATE generator "MSC_GEN"; SET generator "MSC_GEN" TO 0; SET term ^; CREATE TRIGGER "MSC_INSERT" FOR "MSC" before INSERT AS begin IF (new."Id" IS NULL) then new."Id" = gen_id("MSC_GEN",1); end ^ SET term ;^ /*--------------------------------------*/ CREATE generator "KOL_GEN"; SET generator "KOL_GEN" TO 0; SET term ^; CREATE TRIGGER "KOL_INSERT" FOR "MSC" before INSERT AS begin IF (new."Id" IS NULL) then new."Id" = gen_id("KOL_GEN",1); end ^ SET term ;^ /*--------------------------------------*/ CREATE generator "RODZ_GEN"; SET generator "RODZ_GEN" TO 0; SET term ^; CREATE TRIGGER "RODZ_INSERT" FOR "RODZ" before INSERT AS begin IF (new."Id" IS NULL) then new."Id" = gen_id("RODZ_GEN",1); end ^ SET term ;^ /*------------------------------------*/ CREATE generator "MAR_GEN"; SET generator "MAR_GEN" TO 0; SET term ^; CREATE TRIGGER "MAR_INSERT" FOR "RODZ" before INSERT AS begin IF (new."Id" IS NULL) then new."Id" = gen_id("MAR_GEN",1); end ^ SET term ;^ /*--------------------------------*/ CREATE generator "SAMO_GEN"; SET generator "SAMO_GEN" TO 0; SET term ^; CREATE TRIGGER "SAMO_INSERT" FOR "RODZ" before INSERT AS begin IF (new."Id" IS NULL) then new."Id" = gen_id("SAMO_GEN",1); end ^ SET term ;^ /*--------------------------------*/ CREATE exception "EXC_WYPOZYCZONY" 'Samochod wypozyczony!'; CREATE exception "EXC_SPRZEDANY" ' Ten samochod zostal sprzedany lub uszkodzony!'; CREATE exception "EXC_DATA" 'NIEPOPRAWNE DATY'; CREATE generator "WYP_GEN"; SET generator "WYP_GEN" TO 0; SET term ^; CREATE TRIGGER "WYP_INSERT" FOR "WYP" before INSERT AS begin IF( EXISTS (SELECT "Id" FROM "WYP" WHERE "Id_Samochod" = new."Id_Samochod" AND ( ("Od" <= new."Od" AND "Do" >= new."Od") OR ("Od" <= new."Do" AND "Do" >= new."Do") OR ("Od" >= new."Od" AND "Do" <= new."Do") OR ("Od" >= new."Od" AND new."Do" IS NULL) OR ("Od" <= new."Od" AND "Do" IS NULL) ))) then exception "EXC_WYPOZYCZONY"; /*<--------strzała*/ IF( EXISTS (SELECT "Id" FROM "SAMO" WHERE "Id"= new."Id_Samochod" AND "Uwagi" = 'sprzedany')) then exception "EXC_SPRZEDANY"; IF (new."Od" > new."Do") then exception "EXC_DATA"; IF( new."Id" IS NULL ) then new."Id" = gen_id("WYP_GEN", 1); end ^ SET term ;^