unique kombination, welche mehrfach vorkommen darf???

ruutaiokwu

Top Contributor
hallo zusammen,

habe folgendes problem:

in einer tabelle sollten 2 felder bei versch. datensätzen mehrfach die gleichen werte annehmen können/müssen.

erlaubt z.b.:

id | feld1 | feld2
1 ab 12
2 ab 12
3 cc 33
4 cc 33
5 cc 33


nicht erlaubt:

id | feld1 | feld2
1 ab 12
2 ab 13
3 cc 33
4 cc 34
5 cd 33


versteht ihr, was ich meine? sobald mal ein datensatz mit bei feld1 und feld2 mit x und y ausgefüllt wurde, muss das auch so weitergehen... keine andere kombination.

geht das mit sql (verwende sql server...) oder sind datenbanken zu dumm dafür?


grüsse,
jan
 
Dann musst du deine Tabellen normalisieren.


Tabelle 1

IdToValuesTable

Id | ValuesId
1 | 1
2 | 1
3 | 2
etc...
PK auf ID, evlt FK auf Id in der ValuesTable

Tabelle 2
ValuesTable
Id | Field1 | Field2
1 | ab | 12
2 | cc | 33
PK auf Id, Uniique Constarint auf (Field1,Field2)
 
oh stimmt, danke für deinen tipp...

...normalisieren ist grundsätzlich immer gut!

angenommen man will aber einen anderen weg gehen, wie würde es mit triggern aussehen?


gruss, jan
 
angenommen man will aber einen anderen weg gehen, wie würde es mit triggern aussehen?

Sehr häßlich.... Du bräuchtest einen Trigger on Insert and Update.

In dem Trigger Code müsstes du dann so etwas machen (PL/SQL, MySQL sieht etwas anders aus aber das Prinzip sollte das gleiche sein:

SQL:
SELECT COUNT(*) INTO var From MyTable WHERE OLD.Field1 = NEW.Field1 and OLD.Field2 != NEW.Field2;
IF var > 0 THEN
  RAISE EXCEPTION;
END IF;
 

Zurück
Oben