Integritätsbedingungen

bluepeople12

Aktiver Benutzer
Beiträge
26
Hallo Leute,

hab hier ne Aufgabe zu Integritätsbedingungen. Könnt ihr mal schauen ob das soweit alles stimmt.
aufgabe_db18.png
Zur Info: Also bei c) wird gesagt, dass die F aus S eine Teilmenge von A aus R sein muss.

Code:
CREATE TABLE R(
A VARCHAR PRIMARY KEY,
B NUMBER,
C VARCHAR);

CREATE TABLE S(
D VARCHAR UNIQUE NOT NULL,
E NUMBER
F VARCHAR,
FOREIGN KEY (F) REFERENCES R(A));

Das wäre soweit zu a) bis c). Bei d) denk ich mal, kann man ein Trigger nehmen:

Code:
CREATE TRIGGER bed_d
ON R
AFTER INSERT OR UPDATE
REFERENCES old AS old new AS new
BEGIN
  IF ((SELECT SUM(B) FROM R) >= (SELECT MAX(E) FROM S))
    SIGNALE SQLSTATE '45001'
      SET MESSAGE_TEXT = 'Summe von B darf nicht größer sein als Maximum von E';
  END IF;
END;
/

Meint ihr das ist so richtig? Gerade die IF-Bedingung, da habe ich so meine Sorgen ... :-/
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Ich glaube d) geht auch anders, muss ich aber selbst nachlesen. Irgendwo habe ich mal was zu gültigen Werten in einer Spalte gelesen, ich hab da leider heute keine Zeit für...
Aber wenn du schon nen Trigger zur Intigritätsprüfung heranziehst, dann besser einen BEFORE Trigger, also falsche Daten gar nicht erst zulassen.
 
Oben