SQL CHECK Integritätsbedingung

dasdepp

Grünschnabel
Hallo zusammen,

ich stehe hier bei einer Aufgabenstellung auf dem Schlauch.

Ich möchte eine Termin Tabelle erstellen:
create table termin(
Bezeichnung char(30) NOT NULL,
Beginn DATE NOT NULL,
Ende DATE NOT NULL);

Nun möchte ich eine Integritätsüberprüfung erstellen, ob sich ein neuer Termin mit einem bereits bestehenden Termin überschneidet.

Wie kann man diese Aufgabe am besten lösen?

Vielen Dank im voraus!

Viele Grüße
 
Hallo dasdepp,

soetwas realisiert man über Kreuzprüfungen.

(DBStart <= neuerStart AND DBEnd >= neuerStart) OR
(DBStart <= neuerEnd AND DBEnd >= neuerEnd) OR
(DBStart >= neuerStart AND DBEnd <= neuerEnd)

Liebe Grüße
 
Hallo Spalter,

vielen Dank für deine Antwort.

Könntest du mir noch bitte die Syntax dahinter mitteilen:

z.B. CHECK Beginn <>
(SELECT Ende
FROM Termin x....)

Viele Grüße
 
Hallo dasdepp,

hier ein Beispiel für Dich.

SQL:
SELECT
    Beginn,
    Ende,
    Bezeichnung
FROM
    termin
WHERE
    (Beginn <= :neuerStart AND Ende >= :neuerStart) OR
    (Beginn <= :neuerEnd AND Ende >= :neuerEnd) OR
    (Beginn >= :neuerStart AND Ende <= :neuerEnd)

LG
 
Hallo Spalter,

danke für die Antwort.

Aber ich verstehe immer noch nicht wie ich das als Integritätsbedingung für einen neuen Termin in die Tabelle bekomme.

Viele Grüße
 

Neue Beiträge

Zurück