unique über 2 Felder

MScalli

Erfahrenes Mitglied
Hallo,

ich hab da mal eine Frage, ist es möglich in einer Tabelle einen unique über 2 Felder zu legen

bspl.
ich habe eine Tabelle mit feld1 und feld2.
erreichen will ich das wenn in feld1 der wert 100 steht dieser in feld2 nicht mehr eingetragen werden kann.
Ist das irgendwie möglich?

gruss
MScalli
 
Ich glaube du hast meinen Beitrag nicht bis zu ende gelesen :)
das man den Index über 2 Felder legen kann ist mir schon klar, nur sind die dann zusammen gemeint.

bspl.
feld1 = 100
feld2 = 100

würde hier ja gehen(das ist jetzt nur per zufall in der selben spalte.
Ich will aber erreichen wenn z.B. im feld1 100 steht dann darf dieser Wert AUCH in feld2(egal welche Spalte) nicht mehr benutzt werden.
 
Hi,

Ich will aber erreichen wenn z.B. im feld1 100 steht dann darf dieser Wert AUCH in feld2(egal welche Spalte) nicht mehr benutzt werden.

dann lautet die Antwort wohl nein, das ist nicht möglich. Mir wäre da jedenfalls nichts bekannt und mir will auch kein sinnvoller Anwendungsfall einfallen. Vielleicht musst Du Dein DB-Modell ändern, beschreib doch mal, wozu Du das brauchst.

LG
 
Hi

Sorry, das hatte ich übersehen. Hier kannst du es höchstens mit einem Insert Trigger versuchen. Bei vielen Zugriffen kann es dann aber zu Deadlocks kommen
 
Ja nee, kuddeldaddeldu,
Hi,

und mir will auch kein sinnvoller Anwendungsfall einfallen. Vielleicht musst Du Dein DB-Modell ändern, beschreib doch mal, wozu Du das brauchst.

LG

... das gibt es schon häufiger, z.B. bei Vorgänger/Nachfolger-Beziehungen, Hierarchien, Baum- und Knotenstrukturen, Stücklisten, Ober/Unterteilen etc.

Habe es bei mySQL noch nicht einbauen müssen.
Bei Oracle ginge es über eine Constraint, bei anderen DBMSen lässt es sich NICHT ohne Verrenkungen an die DB delegieren.

---> sprich. muss von der Applikation/ per Code verhindert werden.

Oder im dümmsten Fall, wenn es keine Appz gibt, per Trigger wie Nico gepostet hat.

Grüße
Biber
 
Hi,

... das gibt es schon häufiger, z.B. bei Vorgänger/Nachfolger-Beziehungen, Hierarchien, Baum- und Knotenstrukturen, Stücklisten, Ober/Unterteilen etc.

Na ja, schon, aber für solche Strukturen/Beziehungen wäre ja doch etwas mehr nötig, als nur gleiche Werte in 2 Feldern zu verbieten.

Bei Oracle ginge es über eine Constraint, bei anderen DBMSen lässt es sich NICHT ohne Verrenkungen an die DB delegieren.

---> sprich. muss von der Applikation/ per Code verhindert werden.

Mit Oracle kenne ich mich nicht aus. Ich sorge eigentlich immer in der Applikation für inhaltlich konsistente Daten.

Vielleicht verrät uns Mscalli ja noch, was er da genau vorhat und über welches DBMS wir eigentlich reden (oder habe ich da schon wieder was übersehen?)...

LG
 
Es soll Maschinen/Geräte/Anlagen usw. geben die aus Kaufmännischen gründen 2 namen haben müssen.. dieser Name darf aber nur 1 mal vorkommen.. in beiden Spalten.
Fragt mich bitte nicht nach dem genauen sinn :) bin kein Kaufmann.

Ich dachte nur evtl. gibts ne möglichkeit im SQL(wird warscheinlich auf PGSQL laufen.. ist aber noch nicht 100% deswegen habe ich es nicht erwähnt)

Na denn werd ich es wohl in der Applikation prüfen müssen..
trotzdem Vielen Dank an alle Helfer

Gruss
MScalli
 
Zurück