Duplikate vermeiden, aber NULL zulassen - geht das?

29/09/2008 - 15:06 von Ulf Kirsten | Report spam
Hallo!
Ich habe eine Tabelle mit einem Feld vom Typ varchar(50), in dem
Seriennummern gespeichert werden.
Ich muss (leider) NULL für das Feld zulassen, aber es soll keine Duplikate
(außer NULL) geben.
Gibt es dafür eine Lösung?
Ich denke an einen Trigger AFTER UPDATE,INSERT der das prüft, habe aber noch
keine Erfahrung mit dem Erzeugen eines Fehlers und Rollback der
Transaktion - da wuerde ich um Hilfe bitten...

Dank im Voraus!
UK
 

Lesen sie die antworten

#1 Christoph Ingenhaag
29/09/2008 - 15:33 | Warnen spam
"Ulf Kirsten" wrote:

Hallo!
Ich habe eine Tabelle mit einem Feld vom Typ varchar(50), in dem
Seriennummern gespeichert werden.
Ich muss (leider) NULL fr das Feld zulassen, aber es soll keine Duplikate
(auer NULL) geben.
Gibt es dafr eine Lsung?
Ich denke an einen Trigger AFTER UPDATE,INSERT der das prft, habe aber noch
keine Erfahrung mit dem Erzeugen eines Fehlers und Rollback der
Transaktion - da wuerde ich um Hilfe bitten...

Dank im Voraus!
UK




Hallo Ulf,

meiner Ansicht nach gibt es da nur zwei in Frage kommende Lösungen:
1. Du nimmst die Seriennummer in eine eigene Tabelle mit
Fremdschlüsselbeziehung auf die Herkunftstabelle
2. Du erzeugst eine Indexed View, die nur die Spalte Serienummer mit der
Bedingung where Seriennummer is not NULL enthàlt (und erzeugst natürlich dann
den clustered index auf Seriennnummer).

Zum Trigger: Da befindest du dich in der Transaktion. Da wàre ein Rollback
möglich. In Bezug auf Fehlerhandling und Performance ist das für mich keine
Alternative.

Anstatt varchar(50) würde ich das Feld so klein wie möglich halten (oder ist
die Seriennummer so lang?)

Vg
Christoph

Ähnliche fragen