Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Referenzfehler in Datenbank (https://www.delphipraxis.net/71635-referenzfehler-datenbank.html)

geisi 18. Jun 2006 20:23

Datenbank: ORACLE • Version: 10 g • Zugriff über: SQL Developer

Referenzfehler in Datenbank
 
Ich habe eine Tabelle bei der der PRIMARY KEY aus zwei werten besteht.
...
CONSTRAINT pvPK PRIMARY KEY (patientID, verletzungID);

wenn ich jetzt in einer anderen table auf diese referenzieren möchte (FOREIGN KEY), wie muss ich das machen bzw wie soll ich den FOREIGN KEY in dieser anderen table speichern?
so etwa? :
...
patientID NUMBER(11) NOT NULL,
verletzungID NUMBER(3) NOT NULL,
CONSTRAINT pvFK FOREIGN KEY (patientID ...????) REFERENCES (???)

bitte helft mir!

danke im voraus?

mkinzler 18. Jun 2006 20:31

Re: Referenzfehler in Datenbank
 
Ich würde einen künstlichen Schlüssel als PK einführen.

mikhal 19. Jun 2006 05:25

Re: Referenzfehler in Datenbank
 
Hinweis: Hast du schon mal darüber nachgedacht, was passiert, wenn der gleiche Patient die gleiche Verletzung noch mal hat? Wie willst du ohne Constraint-Verletzung diesen neuen Eintrag aufnehmen?

Verwende wie mkinzler es bereits vorschlug einen PK, der über eine Sequence gebildet wird, dann bist du immer auf der sicheren Seite.

Grüße
Mikhal

markusl 19. Jun 2006 07:44

Re: Referenzfehler in Datenbank
 
Hallo zusammen,

Zitat:

SQL-Code:
CONSTRAINT pvFK FOREIGN KEY (patientID ...????) REFERENCES (???)

So etwa: ?
SQL-Code:
   CONSTRAINT pvFK FOREIGN KEY (patientID, verletzungID)
   REFERENCES basetable(patientID, verletzungID)

Ich kann mich der Meinung meiner Vorredner aber auch anschliessen - versuche einen eigenen PK zu definieren.

HTH

Markus

mikhal 19. Jun 2006 11:58

Re: Referenzfehler in Datenbank
 
Wir meinten beide, dass du ein neues Feld in deiner Tabelle aufnimmst, das als PK eingesetzt wird. Zum Beispiel ein Feld ID NUMBER(10) not null, das über eine SEQUENCE bei der Neuanlage eines Datensatzes gefüllt wird.

Grüße
Mikhal


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz