Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: niedziałający triger
Forum PHP.pl > Forum > Bazy danych
djfilon
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łedu 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ład który niby przeszkadza pokazany strzałą ;].
Proszę o pomoc.
Podsyłam kod programu



  1. /-----------------------------------------------------------------------------------------
  2. /*tablele*/
  3. /*-----------------------------------------------------------------*/
  4.  
  5.  
  6. CREATE TABLE "MSC"
  7. (
  8. "Id" int NOT NULL,
  9. "Miasto" varchar (30) NOT NULL,
  10. PRIMARY KEY("Id")
  11. );
  12.  
  13. CREATE TABLE "DANE"
  14. (
  15. "Id" int NOT NULL,
  16. "Imie" varchar(32) NOT NULL ,
  17. "Nazwisko" varchar (32) NOT NULL ,
  18. "Adres" varchar (100) NOT NULL,
  19. "Miasto" int NOT NULL REFERENCES "MSC"("Id") ON UPDATE cascade ON DELETE no action,
  20. PRIMARY KEY("Id")
  21. );
  22.  
  23. CREATE TABLE "RODZ"
  24. (
  25. "Id" integer NOT NULL,
  26. "Rodzaj" varchar (32) NOT NULL,
  27. PRIMARY KEY("Id")
  28. );
  29.  
  30. CREATE TABLE "MAR"
  31. (
  32. "Id" integer NOT NULL,
  33. "Marka" varchar (60) NOT NULL,
  34. PRIMARY KEY("Id")
  35. );
  36.  
  37. CREATE TABLE "KOL"
  38. (
  39. "Id" int NOT NULL,
  40. "Kolor" varchar (30) NOT NULL,
  41. PRIMARY KEY("Id")
  42. );
  43.  
  44.  
  45.  
  46. CREATE TABLE "SAMO"
  47. (
  48. "Id" int NOT NULL,
  49. "Marka" int NOT NULL REFERENCES "MAR"("Id") ON UPDATE cascade ON DELETE no action,
  50. "Id_Rodz" integer NOT NULL REFERENCES "RODZ"("Id") ON UPDATE cascade ON DELETE SET NULL,
  51. "Kolory" int NOT NULL REFERENCES "KOL"("Id") ON UPDATE cascade ON DELETE no action,
  52. "Data_prod" numeric(4,0) NOT NULL,
  53. "Cena" numeric(5,2) NOT NULL,
  54. "Uwagi" varchar (50),
  55. PRIMARY KEY ("Id")
  56. );
  57.  
  58. CREATE TABLE "WYP"
  59. (
  60. "Id" integer NOT NULL,
  61. "Id_Dane" integer NOT NULL REFERENCES "DANE"("Id") ON UPDATE cascade ON DELETE no action,
  62. "Id_Samochod" integer NOT NULL REFERENCES "SAMO"("Id") ON UPDATE cascade ON DELETE no action,
  63. "Od" timestamp NOT NULL,
  64. "Do" timestamp,
  65. "Kara" numeric (5,2),
  66. PRIMARY KEY("Id")
  67. );
  68. /*----------------------------------------------------------------------------------------------*/
  69. /*genratory*/
  70.  
  71.  
  72. CREATE generator "DANE_GEN";
  73.  
  74. SET generator "DANE_GEN" TO 0;
  75.  
  76. SET term ^;
  77.  
  78. CREATE TRIGGER "DANE_INSERT" FOR "DANE"
  79. before INSERT
  80. AS
  81. begin
  82. IF (new."Id" IS NULL) then new."Id" = gen_id("DANE_GEN",1);
  83. end ^
  84. SET term ;^
  85. /*--------------------------------------*/
  86.  
  87. CREATE generator "MSC_GEN";
  88.  
  89. SET generator "MSC_GEN" TO 0;
  90.  
  91. SET term ^;
  92.  
  93. CREATE TRIGGER "MSC_INSERT" FOR "MSC"
  94. before INSERT
  95. AS
  96. begin
  97. IF (new."Id" IS NULL) then new."Id" = gen_id("MSC_GEN",1);
  98. end ^
  99. SET term ;^
  100. /*--------------------------------------*/
  101.  
  102. CREATE generator "KOL_GEN";
  103.  
  104. SET generator "KOL_GEN" TO 0;
  105.  
  106. SET term ^;
  107.  
  108. CREATE TRIGGER "KOL_INSERT" FOR "MSC"
  109. before INSERT
  110. AS
  111. begin
  112. IF (new."Id" IS NULL) then new."Id" = gen_id("KOL_GEN",1);
  113. end ^
  114. SET term ;^
  115. /*--------------------------------------*/
  116.  
  117. CREATE generator "RODZ_GEN";
  118.  
  119. SET generator "RODZ_GEN" TO 0;
  120.  
  121. SET term ^;
  122.  
  123. CREATE TRIGGER "RODZ_INSERT" FOR "RODZ"
  124. before INSERT
  125. AS
  126. begin
  127. IF (new."Id" IS NULL) then new."Id" = gen_id("RODZ_GEN",1);
  128. end ^
  129. SET term ;^
  130. /*------------------------------------*/
  131.  
  132.  
  133. CREATE generator "MAR_GEN";
  134.  
  135. SET generator "MAR_GEN" TO 0;
  136.  
  137. SET term ^;
  138.  
  139. CREATE TRIGGER "MAR_INSERT" FOR "RODZ"
  140. before INSERT
  141. AS
  142. begin
  143. IF (new."Id" IS NULL) then new."Id" = gen_id("MAR_GEN",1);
  144. end ^
  145. SET term ;^
  146. /*--------------------------------*/
  147.  
  148.  
  149.  
  150. CREATE generator "SAMO_GEN";
  151.  
  152. SET generator "SAMO_GEN" TO 0;
  153.  
  154. SET term ^;
  155.  
  156. CREATE TRIGGER "SAMO_INSERT" FOR "RODZ"
  157. before INSERT
  158. AS
  159. begin
  160. IF (new."Id" IS NULL) then new."Id" = gen_id("SAMO_GEN",1);
  161. end ^
  162. SET term ;^
  163. /*--------------------------------*/
  164. CREATE exception "EXC_WYPOZYCZONY" 'Samochod wypozyczony!';
  165. CREATE exception "EXC_SPRZEDANY" ' Ten samochod zostal sprzedany lub uszkodzony!';
  166. CREATE exception "EXC_DATA" 'NIEPOPRAWNE DATY';
  167.  
  168. CREATE generator "WYP_GEN";
  169.  
  170. SET generator "WYP_GEN" TO 0;
  171.  
  172. SET term ^;
  173.  
  174. CREATE TRIGGER "WYP_INSERT" FOR "WYP"
  175. before INSERT
  176. AS
  177. begin
  178. IF( EXISTS (SELECT "Id" FROM "WYP" WHERE "Id_Samochod" = new."Id_Samochod"
  179. AND (
  180. ("Od" <= new."Od" AND "Do" >= new."Od") OR
  181. ("Od" <= new."Do" AND "Do" >= new."Do") OR
  182. ("Od" >= new."Od" AND "Do" <= new."Do") OR
  183. ("Od" >= new."Od" AND new."Do" IS NULL) OR
  184. ("Od" <= new."Od" AND "Do" IS NULL)
  185. )))
  186. then exception "EXC_WYPOZYCZONY"; /*<--------strzała*/
  187.  
  188. IF( EXISTS (SELECT "Id" FROM "SAMO" WHERE "Id"= new."Id_Samochod" AND "Uwagi" = 'sprzedany'))
  189. then exception "EXC_SPRZEDANY";
  190.  
  191.  
  192. IF (new."Od" > new."Do")
  193. then exception "EXC_DATA";
  194.  
  195. IF( new."Id" IS NULL ) then new."Id" = gen_id("WYP_GEN", 1);
  196.  
  197. end ^
  198. SET term ;^
tolomei
Proszę zmień tytuł posta(link).

Użyj BBCode, aby pokolorować składnię SQL.

Jak to zrobisz to będzie dobry moment, aby zacząć czytać Twój post.
phpion
@tolomei:
Używaj proszę przycisku "Raportuj" do zgłaszania nieprawidłowości w postach.

@djfilon:
Proszę o nadanie sensownego tematu - tutaj większość potrzebuje pomocy. Równocześnie proszę o dodanie poprawnego bbcode. W przeciwnym razie wątek zostanie zamknięty.
tolomei
@phpion:
za niewciśnięcie też jest kara ? chyba nie...
gratuluję kreatywności wink.gif
phpion
Zwracanie uwagi użytkownikom to rola moderacji więc proszę nie bawić się w moderatora. Zwykli użytkownicy mają przycisk służący do raportowania nieprawidłowości i powinni z niego korzystać. Zakończmy ten offtopic. Jeśli masz jeszcze jakieś pytania to zapraszam na PW.
djfilon
Post poprawiony, SQL podkolorowany no i link z tytułowaniem trafiony.
Czy teraz wszystko jest ok?
Jeśli tak mam nadzieje ze dostane od was jakieś wskazówki.
Dopiero jak dodałem tekst jako kod SQL widzę że to jednak bardzo dużo zmienia w wyglądzie i łatwiej się to czyta.

Czy naprawdę nikt nie potrafi mi pomoc i napisać coś poza uwagą ze źle napisałem post?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.