Praktikum 5 (Datenbanken)

Tjaja es ist mal wieder ne Weile her dass ich was gepostet habe und von daher habe ich beschlossen im Rahmen meines Studiums die Praktika für mich festzuhalten um sie nochmal etwas aufzufrischen.
Villeicht hilft mir dass um mich etwas besser auf die Klausur vorzubereiten. Da ich aber wenig Lust habe das ganze Ding von vorne aufzurollen steige ich einfach mittendrin ein.

Aufgabenstellung

DB Schema:

/*==============================================================*/
/* DBMS name:      ORACLE Version 10g                           */
/* Created on:     12.12.2011 10:42:32                          */
/*==============================================================*/

/* Praktikum 2 Datenbanken Inserts */
/* 719303 */
/* 718514 */
/* 27.11.2011 */

alter table BOOT
   drop constraint FK_BOOT_BOOT_BOOT_BOOTSTYP;

alter table BOOTSFUEHRER
   drop constraint FK_BOOTSFUE_INHERITAN_PERSON;

alter table BOOTSFUEHRER_VERLEIH
   drop constraint FK_BOOTSFUE_BOOTSFUEH_VERLEIH;

alter table BOOTSFUEHRER_VERLEIH
   drop constraint FK_BOOTSFUE_BOOTSFUEH_BOOTSFUE;

alter table FAHRGEBIET_BOOTSTYP
   drop constraint FK_FAHRGEBI_FAHRGEBIE_FAHRGEBI;

alter table FAHRGEBIET_BOOTSTYP
   drop constraint FK_FAHRGEBI_FAHRGEBIE_BOOTSTYP;

alter table HAFEN_FAHRGEBIET
   drop constraint FK_HAFEN_FA_HAFEN_FAH_HAFEN;

alter table HAFEN_FAHRGEBIET
   drop constraint FK_HAFEN_FA_HAFEN_FAH_FAHRGEBI;

alter table KUNDE
   drop constraint FK_KUNDE_INHERITAN_PERSON;

alter table VERLEIH
   drop constraint FK_VERLEIH_KUNDE_VER_KUNDE;

alter table VERLEIH
   drop constraint FK_VERLEIH_STARTHAFE_HAFEN;

alter table VERLEIH
   drop constraint FK_VERLEIH_VERLEIH___BOOT;

alter table VERLEIH
   drop constraint FK_VERLEIH_ZIELHAFEN_HAFEN;

drop index BOOT_BOOTSTYP_FK;

drop table BOOT cascade constraints;

drop table BOOTSFUEHRER cascade constraints;

drop index BOOTSFUEHRER_VERLEIH2_FK;

drop index BOOTSFUEHRER_VERLEIH_FK;

drop table BOOTSFUEHRER_VERLEIH cascade constraints;

drop table BOOTSTYP cascade constraints;

drop table FAHRGEBIET cascade constraints;

drop index FAHRGEBIET_BOOTSTYP2_FK;

drop index FAHRGEBIET_BOOTSTYP_FK;

drop table FAHRGEBIET_BOOTSTYP cascade constraints;

drop table HAFEN cascade constraints;

drop index HAFEN_FAHRGEBIET2_FK;

drop index HAFEN_FAHRGEBIET_FK;

drop table HAFEN_FAHRGEBIET cascade constraints;

drop table KUNDE cascade constraints;

drop table PERSON cascade constraints;

drop index ZIELHAFEN_FK;

drop index STARTHAFEN_FK;

drop index VERLEIH__BOOT_FK;

drop index KUNDE_VERLEIH_FK;

drop table VERLEIH cascade constraints;

/*==============================================================*/
/* Table: BOOT                                                  */
/*==============================================================*/
create table BOOT  (
   BID                  INTEGER                         not null,
   BTID                 INTEGER                         not null,
   LETZTEWARTUNG        DATE,
   constraint PK_BOOT primary key (BID)
);

/*==============================================================*/
/* Index: BOOT_BOOTSTYP_FK                                      */
/*==============================================================*/
create index BOOT_BOOTSTYP_FK on BOOT (
   BTID ASC
);

/*==============================================================*/
/* Table: BOOTSFUEHRER                                          */
/*==============================================================*/
create table BOOTSFUEHRER  (
   PID                  INTEGER                         not null,
   FUEHRERSCHEINTYP     VARCHAR2(20)                    not null,
   constraint PK_BOOTSFUEHRER primary key (PID)
);

/*==============================================================*/
/* Table: BOOTSFUEHRER_VERLEIH                                  */
/*==============================================================*/
create table BOOTSFUEHRER_VERLEIH  (
   VID                  INTEGER                         not null,
   PID                  INTEGER                         not null,
   constraint PK_BOOTSFUEHRER_VERLEIH primary key (VID, PID)
);

/*==============================================================*/
/* Index: BOOTSFUEHRER_VERLEIH_FK                               */
/*==============================================================*/
create index BOOTSFUEHRER_VERLEIH_FK on BOOTSFUEHRER_VERLEIH (
   VID ASC
);

/*==============================================================*/
/* Index: BOOTSFUEHRER_VERLEIH2_FK                              */
/*==============================================================*/
create index BOOTSFUEHRER_VERLEIH2_FK on BOOTSFUEHRER_VERLEIH (
   PID ASC
);

/*==============================================================*/
/* Table: BOOTSTYP                                              */
/*==============================================================*/
create table BOOTSTYP  (
   BTID                 INTEGER                         not null,
   TYPBEZEICHNUNG       VARCHAR2(20),
   MAXPERSONEN          INTEGER,
   WOCHENPREIS          NUMBER(6,2),
   FUHRERSCHEINBENOETIGT SMALLINT,
   constraint PK_BOOTSTYP primary key (BTID)
);

/*==============================================================*/
/* Table: FAHRGEBIET                                            */
/*==============================================================*/
create table FAHRGEBIET  (
   FGID                 INTEGER                         not null,
   GEBIETSSNAME         VARCHAR2(20),
   constraint PK_FAHRGEBIET primary key (FGID)
);

/*==============================================================*/
/* Table: FAHRGEBIET_BOOTSTYP                                   */
/*==============================================================*/
create table FAHRGEBIET_BOOTSTYP  (
   FGID                 INTEGER                         not null,
   BTID                 INTEGER                         not null,
   constraint PK_FAHRGEBIET_BOOTSTYP primary key (FGID, BTID)
);

/*==============================================================*/
/* Index: FAHRGEBIET_BOOTSTYP_FK                                */
/*==============================================================*/
create index FAHRGEBIET_BOOTSTYP_FK on FAHRGEBIET_BOOTSTYP (
   FGID ASC
);

/*==============================================================*/
/* Index: FAHRGEBIET_BOOTSTYP2_FK                               */
/*==============================================================*/
create index FAHRGEBIET_BOOTSTYP2_FK on FAHRGEBIET_BOOTSTYP (
   BTID ASC
);

/*==============================================================*/
/* Table: HAFEN                                                 */
/*==============================================================*/
create table HAFEN  (
   HID                  INTEGER                         not null,
   LIEGEGEBUEHR         NUMBER(3,2),
   HAFENNAME            VARCHAR2(20),
   constraint PK_HAFEN primary key (HID)
);

/*==============================================================*/
/* Table: HAFEN_FAHRGEBIET                                      */
/*==============================================================*/
create table HAFEN_FAHRGEBIET  (
   HID                  INTEGER                         not null,
   FGID                 INTEGER                         not null,
   constraint PK_HAFEN_FAHRGEBIET primary key (HID, FGID)
);

/*==============================================================*/
/* Index: HAFEN_FAHRGEBIET_FK                                   */
/*==============================================================*/
create index HAFEN_FAHRGEBIET_FK on HAFEN_FAHRGEBIET (
   HID ASC
);

/*==============================================================*/
/* Index: HAFEN_FAHRGEBIET2_FK                                  */
/*==============================================================*/
create index HAFEN_FAHRGEBIET2_FK on HAFEN_FAHRGEBIET (
   FGID ASC
);

/*==============================================================*/
/* Table: KUNDE                                                 */
/*==============================================================*/
create table KUNDE  (
   PID                  INTEGER                         not null,
   RECHNUNG_PLZ         SMALLINT                        not null,
   RECHNUNG_STR         VARCHAR2(20)                    not null,
   RECHNUNG_ORT         VARCHAR2(20)                    not null,
   constraint PK_KUNDE primary key (PID)
);

/*==============================================================*/
/* Table: PERSON                                                */
/*==============================================================*/
create table PERSON  (
   PID                  INTEGER                         not null,
   VORNAME              VARCHAR2(20)                    not null,
   NACHNAME             VARCHAR2(20)                    not null,
   GEBURTSDATUM         DATE                            not null,
   constraint PK_PERSON primary key (PID)
);

/*==============================================================*/
/* Table: VERLEIH                                               */
/*==============================================================*/
create table VERLEIH  (
   VID                  INTEGER                         not null,
   PID                  INTEGER                         not null,
   BID                  INTEGER                         not null,
   SHID                 INTEGER                         not null,
   ZHID                 INTEGER                         not null,
   STARTDATUM           DATE                            not null,
   ENDDATUM             DATE                            not null,
   MITFAHRER            INTEGER,
   constraint PK_VERLEIH primary key (VID)
);

/*==============================================================*/
/* Index: KUNDE_VERLEIH_FK                                      */
/*==============================================================*/
create index KUNDE_VERLEIH_FK on VERLEIH (
   PID ASC
);

/*==============================================================*/
/* Index: VERLEIH__BOOT_FK                                      */
/*==============================================================*/
create index VERLEIH__BOOT_FK on VERLEIH (
   BID ASC
);

/*==============================================================*/
/* Index: STARTHAFEN_FK                                         */
/*==============================================================*/
create index STARTHAFEN_FK on VERLEIH (
   SHID ASC
);

/*==============================================================*/
/* Index: ZIELHAFEN_FK                                          */
/*==============================================================*/
create index ZIELHAFEN_FK on VERLEIH (
   ZHID ASC
);

alter table BOOT
   add constraint FK_BOOT_BOOT_BOOT_BOOTSTYP foreign key (BTID)
      references BOOTSTYP (BTID);

alter table BOOTSFUEHRER
   add constraint FK_BOOTSFUE_INHERITAN_PERSON foreign key (PID)
      references PERSON (PID);

alter table BOOTSFUEHRER_VERLEIH
   add constraint FK_BOOTSFUE_BOOTSFUEH_VERLEIH foreign key (VID)
      references VERLEIH (VID);

alter table BOOTSFUEHRER_VERLEIH
   add constraint FK_BOOTSFUE_BOOTSFUEH_BOOTSFUE foreign key (PID)
      references BOOTSFUEHRER (PID);

alter table FAHRGEBIET_BOOTSTYP
   add constraint FK_FAHRGEBI_FAHRGEBIE_FAHRGEBI foreign key (FGID)
      references FAHRGEBIET (FGID);

alter table FAHRGEBIET_BOOTSTYP
   add constraint FK_FAHRGEBI_FAHRGEBIE_BOOTSTYP foreign key (BTID)
      references BOOTSTYP (BTID);

alter table HAFEN_FAHRGEBIET
   add constraint FK_HAFEN_FA_HAFEN_FAH_HAFEN foreign key (HID)
      references HAFEN (HID);

alter table HAFEN_FAHRGEBIET
   add constraint FK_HAFEN_FA_HAFEN_FAH_FAHRGEBI foreign key (FGID)
      references FAHRGEBIET (FGID);

alter table KUNDE
   add constraint FK_KUNDE_INHERITAN_PERSON foreign key (PID)
      references PERSON (PID);

alter table VERLEIH
   add constraint FK_VERLEIH_KUNDE_VER_KUNDE foreign key (PID)
      references KUNDE (PID);

alter table VERLEIH
   add constraint FK_VERLEIH_STARTHAFE_HAFEN foreign key (SHID)
      references HAFEN (HID);

alter table VERLEIH
   add constraint FK_VERLEIH_VERLEIH___BOOT foreign key (BID)
      references BOOT (BID);

alter table VERLEIH
   add constraint FK_VERLEIH_ZIELHAFEN_HAFEN foreign key (ZHID)
      references HAFEN (HID);

Inserts:

/* Praktikum 3 Datenbanken Inserts */
/* 719303 */
/* 718514 */
/* 27.11.2011 */

/* Personen */
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (1, 'Max', 'Muster', '23.03.1987');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (2, 'Hans', 'Wurst', '11.06.1992');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (3, 'Peter', 'Lustig', '07.12.1979');
INSERT INTO PERSON (PID, VORNAME, NACHNAME, GEBURTSDATUM) VALUES (4, 'Lieschen', 'Müller', '09.08.1980');

/* Kunden */

INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (1, '11111', 'Grenzweg 3', 'Musterhausen');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (2, '22222', 'Mittelgasse 12', 'Wurstdorf');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (3, '33333', 'Ringstraße 5', 'Frohenheim');
INSERT INTO KUNDE (PID, RECHNUNG_PLZ, RECHNUNG_STR, RECHNUNG_ORT) VALUES (4, '44444', 'Müllerweg 33', 'Mühlhausen');

/* Bootstypen */
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (1, 'Cirrus', 2, 1140, 0);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (2, 'Clipper', 4, 1830, 0);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (3, 'Calypso', 6, 2140, 1);
INSERT INTO BOOTSTYP (BTID, TYPBEZEICHNUNG, MAXPERSONEN, WOCHENPREIS, FUHRERSCHEINBENOETIGT) VALUES (4, 'Royal Magnifique', 8, 3000, 1);

/* Boote */
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (1, 1, '27.05.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (2, 1, '28.06.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (3, 1, '29.08.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (4, 1, '30.10.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (5, 1, '01.03.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (6, 1, '02.07.2011');

INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (10, 3, '03.9.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (11, 3, '04.11.2011');

INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (20, 4, '05.6.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (21, 4, '06.4.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (22, 4, '07.2.2011');

INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (50, 2, '08.5.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (51, 2, '09.7.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (52, 2, '10.9.2011');
INSERT INTO BOOT (BID, BTID, LETZTEWARTUNG) VALUES (53, 2, '11.6.2011');

/* Fahrgebiete */
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (1, 'Midi');
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (2, 'Camargue');
INSERT INTO FAHRGEBIET (FGID, GEBIETSSNAME) VALUES (3, 'Bretagne');

/* Fahrgebiet Bootstyp */
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 1);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 1);

INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 2);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 2);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (3, 2);

INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (1, 3);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 3);

INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (2, 4);
INSERT INTO FAHRGEBIET_BOOTSTYP (FGID, BTID) VALUES (3, 4);

/* Häfen */
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (1, 1.50, 'Toulouse');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (2, 1.50, 'Castelnaudary');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (3, 3, 'Carcassonne');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (4, 3, 'Narbonne');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (5, 1.50, 'Montpellier');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (6, 3, 'Aigues-Mortes');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (7, 1.50, 'Beaucaire');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (8, 3, 'Dinan');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (9, 1.50, 'Messac');
INSERT INTO HAFEN (HID, LIEGEGEBUEHR, HAFENNAME) VALUES (10, 3, 'Nort-sur-Erdre');

/* Verträge */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (1, 1, 1, 2, 1, '27.11.2011', '30.11.2011', 2);
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (2, 2, 50, 5, 3, '27.11.2011', '15.12.2011', 2);
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (3, 3, 21, 1, 9, '27.11.2011', '14.01.2012', 2);
			
/* Verträge Bootsführer */
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (1, 1);
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (2, 1);
INSERT INTO BOOTSFUEHRER (PID, fuehrerscheintyp) VALUES (3, 1);

/* Verträge Bootsführer */
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (1, 1);
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (2, 2);
INSERT INTO BOOTSFUEHRER_VERLEIH (VID, PID) VALUES (3, 3);
			
/* Hafen Fahrgebiete */
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (1, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (2, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (3, 1);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (4, 1); 

INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (4, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (5, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (6, 2);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (7, 2);

INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (8, 3);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (9, 3);
INSERT INTO HAFEN_FAHRGEBIET (HID, FGID) VALUES (10, 3);

Die Lösung des Ganzen war dann relativ trivial und hat etwa 2 Stunden gedauert wobei locker 1 Stunde für das Lesen der versäumten Vorlesungsfolien draufging :O

/* Praktikum 5 */
/* 09.01.2012 */

/* DEBUG Kram für Oracle 10g */
set serveroutput on
show errors

ALTER TABLE BOOT ADD naechstewartung DATE;

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 1;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 2;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 3;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 4;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 5;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 6;

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 10;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 11;	

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 20;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 21;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 22;

UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 50;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 51;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 52;
UPDATE BOOT SET naechstewartung = add_months(letzteWartung, 6) WHERE bid = 53;

/* stored function */
/* Wenn Maintanance Datum kleiner als Startdatum oder Maintanance Datum größer Enddatum dann keine Maintanance in Zeitraum */
/* return: true wenn Wartungsarbeiten im gegebenen Zeitraum liegen, ansonsten return:false */
create or replace
function maintanance_check (boots_id integer, s_datum Date, e_datum Date) 
return BOOLEAN
IS
  nw_datum boot.naechstewartung%type;
begin
  select naechstewartung into nw_datum from boot where bid = boots_id;
  
  if nw_datum not between s_datum and  e_datum then 
      return false;
    else 
      return true;
  end if;

end maintanance_check;
/

/* Trigger für insert/update von Verträgen! */
create or replace trigger tr_maintanance_check
before insert or update 
on verleih
for each row
declare
  MAINTANANCE_SHEDULED exception;
  m_d DATE;
begin
  
  if maintanance_check(:new.bid, :new.startdatum, :new.enddatum) then
    raise MAINTANANCE_SHEDULED;
  end if;
  
exception
  when MAINTANANCE_SHEDULED then
  raise_application_error(-20001, 'Das Boot ist während dem gewünschten Ausleihzeitraum für eine geplante Wartung vorgemerkt und kann nicht ausgeliehen werden!');
end; 
/

/* Testfälle für den trigger */

/* test insert 1: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte fehlermeldung!  */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (4, 1, 1, 2, 1, '20.03.2012', '02.04.2012', 2);

/* test insert 2: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte ordnungsgemäßes insert!  */
INSERT INTO VERLEIH (VID, PID, BID, shID, zhID, STARTDATUM, ENDDATUM, MITFAHRER) VALUES (5, 1, 1, 2, 1, '01.04.2012', '02.04.2012', 2);

/* test update 1: Wartungsarbeiten innerhalb ausleihzeitraum => erwarte fehlermeldung!  */
update verleih set startdatum = '20.03.2012', enddatum = '02.04.2012' where vid = 1;

/* test update 1: Wartungsarbeiten außerhalb ausleihzeitraum => erwarte ordnungsgemäßes update!  */
update verleih set startdatum = '01.04.2012', enddatum = '02.04.2012' where vid = 1;

 

Kommentar verfassen

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.