[MySQL 5.1.40] macht CHECK hier Sinn?

BaseBallBatBoy

Erfahrenes Mitglied
Hallo!

Folgende Situation. Mitarbeiter gehoeren mindestens einer Organisation an, koennen aber auch mehreren angehoeren. Jeder Mitarbeiter hat eine 'Haupt'-Organisation, und zwar immer genau eine. Also habe ich die Tabelle:

id | mitarbeiter_id | organisation_id | hauptorganisation
1 | 1 | 1 | 0
2 | 1 | 2 | 1

Wie kann ich nun bereits auf DB level garantieren, dass immer genau eine hauptorganisation pro mitarbeiter_id besteht? Z.B. wenn ich id 2 loesche dass dann automatisch id 1 zur hauptorganisation wird? Wenn ich id 1 als hauptorganisation setze dass dann automatisch id 2 angepasst wird? Laesst sich das ueberhaupt gut innerhalb der DB loesen? Checks, Triggers, etc.? Oder loest man sowas besser auf Applikationslevel?

Gruss
 
Applikation oder Trigger.

wie koennte so ein Trigger denn aussehen? So wie ich das sehe muesster der Folgende Faelle abdecken.

BEFORE DELETE
- Wenn ein Datensatz geloescht wird der nicht Hauptorganisation ist, nichts tun
- Wenn ein Datensatz geloescht wird der Hauptorganisation ist, einen anderen Datensatz dieses Mitarbeiters zur Hauptorganisation machen. Falls mehrere zur Auswahl stehen, den mit der tiefsten ID waehlen

BEFORE UPDATE
- Wenn die Hauptorganisation nicht geaendert wird, nichts tun
- Wenn die Hauptorganisation gesetzt werden soll, den Datensatz der bereits Hauptorganisation ist waehlen und diesen zuruecksetzen
- Wenn die Hauptorganisation 'weggenommen' werden soll, den Datensatz mit der tiefsten ID zur Hauptorganisation machen
 
Zurück