Forums Neueste Beiträge
 

DDL: CHECK-Constraint mit Referenz auf andere Tabelle

14/08/2009 - 15:58 von Thomas Winkler | Report spam
Hi,

ich würde gerne in der N-Tabelle einer 1:N Verknüpfung einen
Check-Constraint einfügen - aber unter folgenden Bedingungen.

Die N-Tabelle hat die Felder "Datum" und "ZeitraumID". ZeitraumID ist
Fremdschlüssel aus der 1-Tabelle.

in der 1-Tabelle ist der Zeitraum definiert mittels der Felder "ID"
(PK), "DatumVon" und "DatumBis".

Jetzt habe ich folgendes probiert:

ALTER TABLE <N-tableName>
ADD CONSTRAINT <constraintName>
CHECK ([Datum] BETWEEN (DFirst("DatumVon", "1-Tabelle", "ID = " &
ZeitraumID)) AND (DFirst("DatumBis", "1-Tabelle", "ID = " & ZeitraumID)))

Leider kennt Jet keine D*-Funktionen.

Neuer Versuch:

ALTER TABLE <N-tableName>
ADD CONSTRAINT <constraintName>
CHECK ([Datum] BETWEEN (SELECT First(DatumVon) FROM [1-Tabelle]
WHERE ID = ZeitraumID) AND (SELECT First(DatumBis) FROM [1-Tabelle]
WHERE ID = ZeitraumID)

Hier scheitert's logischer Weise daran, dass die 1-Tabelle kein Feld
ZeitraumID kennt.

Wie bekomme ich jetzt die Verknüpfung hin?

Irgendwie hab ich das Gefühl, dass hier mit EVAL() was zu machen sein
könnte. Leider sind auch diese Versuche gescheitert.

Thomas

"Access? Damit arbeite ich nicht. Das ist doch nur ein abgespecktes Excel."
 

Lesen sie die antworten

#1 Oliver Straub
14/08/2009 - 21:00 | Warnen spam
Hi Thomas,

ich würde gerne in der N-Tabelle einer 1:N Verknüpfung einen
Check-Constraint einfügen - aber unter folgenden Bedingungen.

Die N-Tabelle hat die Felder "Datum" und "ZeitraumID". ZeitraumID ist
Fremdschlüssel aus der 1-Tabelle.

in der 1-Tabelle ist der Zeitraum definiert mittels der Felder "ID" (PK),
"DatumVon" und "DatumBis".

Jetzt habe ich folgendes probiert:

ALTER TABLE <N-tableName>
ADD CONSTRAINT <constraintName>
CHECK ([Datum] BETWEEN (DFirst("DatumVon", "1-Tabelle", "ID = " &
ZeitraumID)) AND (DFirst("DatumBis", "1-Tabelle", "ID = " & ZeitraumID)))



in CHECK-Beschrànkung auf Spaltenebene können nicht mehrere Spalten
verwendet werden.
IMO ist keine Kombination von CONSTRAINT und CHECK zulàssig.

Gültigkeitsregeln auf Tabellenebene sind in Access nicht gerade vorteilhaft.
Besser man prüft das beim Speichern selber ab (sag ich noch mal, auch wenn
Du es schon weißt;).


Gruss
Oliver

Ähnliche fragen