Heim > Datenbank > MySQL-Tutorial > Wie kann ich bedingte eindeutige Einschränkungen in SQL Server erzwingen, ohne Trigger zu verwenden?

Wie kann ich bedingte eindeutige Einschränkungen in SQL Server erzwingen, ohne Trigger zu verwenden?

DDD
Freigeben: 2025-01-10 06:40:44
Original
423 Leute haben es durchsucht

How Can I Enforce Conditional Unique Constraints in SQL Server Without Using Triggers?

Erreichen bedingter eindeutiger Einschränkungen in SQL Server: Ein auslöserfreier Ansatz

Um die Datenintegrität aufrechtzuerhalten, sind häufig eindeutige Einschränkungen erforderlich, die selektiv auf Teilmengen von Daten angewendet werden. Während Trigger eine gängige Lösung sind, bietet SQL Server eine elegantere Methode mit gefilterten Indizes.

Nutzung gefilterter Indizes für bedingte Eindeutigkeit

Ein gefilterter Index indiziert nur einen Teil der Zeilen einer Tabelle, der durch eine Filterbedingung bestimmt wird. Dies ermöglicht bedingte eindeutige Einschränkungen.

Stellen Sie sich ein Szenario vor, das Eindeutigkeit für (ID, RecordStatus) nur dann erfordert, wenn RecordStatus 1 ist. Die Lösung ist einfach:

<code class="language-sql">CREATE UNIQUE INDEX MyIndex
ON MyTable(ID)
WHERE RecordStatus = 1;</code>
Nach dem Login kopieren

Dieser Index indiziert nur Zeilen mit RecordStatus = 1 und erzwingt so die Eindeutigkeit dieser Teilmenge. Ein Verstoß gegen diese Einschränkung führt zu einem Fehler:

<code>Msg 2601, Level 14, State 1, Line 13
Cannot insert duplicate key row in object 'dbo.MyTable' with unique index 'MyIndex'. The duplicate key value is (9999).</code>
Nach dem Login kopieren

Wichtige Überlegung

Gefilterte Indizes wurden in SQL Server 2008 eingeführt. Für frühere Versionen sind Trigger oder eine Kombination aus eindeutigen Einschränkungen und Techniken zur Zeilenversionierung notwendige Alternativen.

Das obige ist der detaillierte Inhalt vonWie kann ich bedingte eindeutige Einschränkungen in SQL Server erzwingen, ohne Trigger zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage