Ich habe diese Tabelle:
%Vor% Ich möchte eine eindeutige Einschränkung erstellen, die nur für die Felder (obj_x, date_x, type_x)
gilt, wenn status_x <> 5
.
Ich habe versucht, dieses zu erstellen, aber Oracle sagt:
%Vor% %Vor%Was ist die richtige Syntax?
@jamesfrj: Es sieht so aus, als wollten Sie sicherstellen, dass Ihre Tabelle nur einen Datensatz enthält, für den status <>5
gilt.
Sie können versuchen, einen eindeutigen Funktionsindex zu erstellen, indem Sie die Spalten wie unten angegeben verketten.
%Vor%Ich hoffe, es hilft
Vishad
Unter Oracle 11 können Sie eine Reihe virtueller Spalten erstellen, die nur dann einen Nicht-NULL-Wert erhalten, wenn STATUS_X 5 ist, und dann sie eindeutig machen:
%Vor%Sie können Duplikate beliebig einfügen, solange STATUS_X nicht 5:
ist %Vor%Aber versucht, ein Duplikat einzufügen, wenn STATUS_X 5 ist, schlägt fehl:
%Vor%Da der CREATE UNIQUE INDEX nur einen Wert erwartet, können Sie die Spalten wie folgt verketten
%Vor%Tags und Links sql oracle conditional unique unique-constraint