Wie erstelle ich einen eindeutigen Index für Felder mit möglichen Nullwerten (Oracle 11g)?

8

Hier ist die Beispieltabelle mit 3 Spalten (ID, UNIQUE_VALUE, UNIQUE_GROUP_ID)

Ich möchte unter folgenden Datensätzen erlaubt sein:

%Vor%

oder

%Vor%

oder ( Hinweis: Diese Bedingung ist nicht erlaubt in unique index noch unique constraint )

%Vor%

und diese dürfen nicht erlaubt sein:

%Vor%

Ich habe einen eindeutigen Index für die letzten 2 Spalten erstellt, aber nur die ersten 2 Beispiele können erlaubt werden.

Ist es möglich, db die Eindeutigkeit dieser zwei Spalten nur prüfen zu lassen, wenn beide nicht null sind?

    
Eric 24.10.2012, 04:22
quelle

2 Antworten

19

Sie möchten nur die Eindeutigkeit für die Zeilen erzwingen, bei denen sowohl UNIQUE_VALUE als auch UNIQUE_GROUP_ID nicht null sind. Zu diesem Zweck können Sie einen eindeutigen funktionsbasierten Index verwenden:

%Vor%     
Jeffrey Kemp 24.10.2012, 08:54
quelle
-2
___ tag123sql ___ Structured Query Language (SQL) ist eine Sprache für die Abfrage von Datenbanken. Fragen sollten Codebeispiele, Tabellenstruktur, Beispieldaten und ein Tag für die verwendete DBMS-Implementierung (z. B. MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2 usw.) enthalten. Wenn sich Ihre Frage nur auf ein bestimmtes DBMS bezieht (verwendet bestimmte Erweiterungen / Funktionen), verwenden Sie stattdessen das Tag des DBMS. Antworten auf mit SQL gekennzeichnete Fragen sollten den ISO / IEC-Standard SQL verwenden. ___ answer13045841 ___

Sie möchten nur die Eindeutigkeit für die Zeilen erzwingen, bei denen sowohl %code% als auch %code% nicht null sind. Zu diesem Zweck können Sie einen eindeutigen funktionsbasierten Index verwenden:

%Vor%     
___ tag123oracle ___ Oracle Database ist ein Datenbankmanagementsystem mit mehreren Modellen, das von Oracle Corporation erstellt wurde. Verwenden Sie dieses Tag NICHT für andere Produkte von Oracle wie Java und MySQL. ___ tag123database ___ Eine Datenbank ist eine organisierte Sammlung von Daten. Es ist die Sammlung von Schemas, Tabellen, Abfragen, Berichten, Ansichten und anderen Objekten. Die Daten sind typischerweise so organisiert, dass sie Aspekte der Realität so modellieren, dass sie Prozesse unterstützen, die Informationen benötigen. Verwenden Sie dieses Tag, wenn Sie Fragen zum Entwerfen einer Datenbank haben. Wenn es sich um ein bestimmtes Datenbankverwaltungssystem (z. B. MySQL) handelt, verwenden Sie stattdessen dieses Tag. ___ tag123indexing ___ Indizierung von Datenstrukturen ist eine allgemeine Technik, um die Geschwindigkeit von Datensuchen zu verbessern. ___ qstnhdr ___ Wie erstelle ich einen eindeutigen Index für Felder mit möglichen Nullwerten (Oracle 11g)? ___ qstntxt ___

Hier ist die Beispieltabelle mit 3 Spalten (ID, UNIQUE_VALUE, UNIQUE_GROUP_ID)

Ich möchte unter folgenden Datensätzen erlaubt sein:

%Vor%

oder

%Vor%

oder ( Hinweis: Diese Bedingung ist nicht erlaubt in %code% noch %code% )

%Vor%

und diese dürfen nicht erlaubt sein:

%Vor%

Ich habe einen eindeutigen Index für die letzten 2 Spalten erstellt, aber nur die ersten 2 Beispiele können erlaubt werden.

Ist es möglich, db die Eindeutigkeit dieser zwei Spalten nur prüfen zu lassen, wenn beide nicht null sind?

    
___
planben 27.10.2012 19:13
quelle

Tags und Links