Einfügen eines Datensatzes in Tabelle B verhinder, abhängig von bit Wert in Tabelle A (per ForeinKey oder Check Constraint) HOWTO?

09/12/2008 - 18:28 von Michael Böckinghoff | Report spam
Hallo NG,

ich habe hier zwei Tabelle ca so aufgebaut
Mit Momentanen Inhalt:

TabelleA:

AuftragID ZeitenSpeichernBlockieren
4711 0
4712 1
0815 0


TabelleB:

ZeiteID AuftragID Zeitdauer
1 4711 3
2 4712 4
3 0815 4

Jetzt soll ein weiterer Datensatz hinzugefügt werden für 4711, das soll
schon
von der DB blockiert werden per ForeignKey Check Constraint oder sonst was .
(Die vorhandene Zeit für 4711 konnte hinzugefügt werden als das
"ZeitenSpeichernBlockieren" noch auf 0 stand)

Wie verhinder ich also auf Datenbankseite das man für 4712 keine rows
mehr in TabelleB hinzufügen kann? Es wird ein einfach INSERT abgesetzt und
der soll abhàngig von
"ZeitenSpeichernBlockieren" verhindert werden.

Ich könnte natürlich auf clientseite das abfangen oder statt direkt ein
INSERT eine Storedprocedure benutzen,
aber ich will das eigentlich grundsàtzlich per beziehung verhindern...

Geht das irgendwie? Wenn nicht wie würde wohl die eine Passende
StoredProcedure fürs Insert aussehen?


Gruß und schon mal Danke im Vorraus!

Gruß

Michael
 

Lesen sie die antworten

#1 Peter Fleischer
10/12/2008 - 05:42 | Warnen spam
"Michael Böckinghoff" schrieb im Newsbeitrag
news:

ich habe hier zwei Tabelle ca so aufgebaut
Mit Momentanen Inhalt:

TabelleA:

AuftragID ZeitenSpeichernBlockieren
4711 0
4712 1
0815 0


TabelleB:

ZeiteID AuftragID Zeitdauer
1 4711 3
2 4712 4
3 0815 4

Jetzt soll ein weiterer Datensatz hinzugefügt werden für 4711, das soll
schon
von der DB blockiert werden per ForeignKey Check Constraint oder sonst was
.
(Die vorhandene Zeit für 4711 konnte hinzugefügt werden als das
"ZeitenSpeichernBlockieren" noch auf 0 stand)

Wie verhinder ich also auf Datenbankseite das man für 4712 keine rows
mehr in TabelleB hinzufügen kann? Es wird ein einfach INSERT abgesetzt und
der soll abhàngig von
"ZeitenSpeichernBlockieren" verhindert werden.



Hallo Michael,
wenn du die Spalte als unikat kennzeicnest, wird das Eintragen von doppelten
Feldinhalten durch den Datenbankserver verhindert und als Fehler gemeldet.


Viele Gruesse

Peter

Ähnliche fragen