referential-integrity

___ answer5479815 ___

Am einfachsten ist ein eindeutiger funktionsbasierter Index für eine Konstante

%Vor%

Alternativen:

Statt einer Tabelle könnten Sie einen Blick auf DUAL werfen Das würde wirklich bedeuten, dass UPDATE tatsächlich eine CREATE- oder REPLACE-VIEW wäre, die möglicherweise nicht angemessen ist. Funktionen, die Werte aus einem Pakethauptteil oder aus globalen Anwendungskontexten zurückgeben, können eine Umgehung dafür sein, wenn dies zu Ungültigkeitsproblemen führt.

Mit 11g ist eine READ ONLY-Tabelle (oder in früheren Versionen eine Tabelle in einem schreibgeschützten Tablespace) eine Option.

    
___ answer5478329 ___

Hier sind einige Optionen:

  • Widerrufen Sie die INSERT-Berechtigungen für diese Tabelle.
  • Verwalten Sie den gesamten Zugriff auf die Konfigurationstabelle über Prozeduren
  • Ersetzen Sie die Konfigurationstabelle durch eine Ansicht, die eine Spalte mit einer Prüfbedingung (col = 1) und einer eindeutigen Integritätsbedingung ausblendet.
  • Erstellen Sie diese materialisierte Ansicht trotzdem
  • Erstellen Sie eine Tabelle, die die Feuer auf INSERT auslöst, die eine Ausnahme auslösen
  • Überdenken Sie die Tabellenstruktur und fügen Sie ein FROM_DATE hinzu, damit die Tabelle NICHT aktualisiert wird, sondern Sie jedes Mal eine neue Zeile erstellen. Ihre aktuelle Konfiguration ist die Zeile mit dem höchsten from_date. Eine current_config-Ansicht über diese Tabelle ist nützlich.
  • Ersetzen Sie die Tabelle durch eine als %code% definierte Ansicht. Dies ist keine feste Lösung.
___ 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. ___ 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. ___ tag123databasedesign ___ Datenbankdesign ist der Prozess der Angabe der logischen und / oder physischen Teile einer Datenbank. Das Ziel des Datenbankentwurfs besteht darin, ein "Universum des Diskurses" darzustellen - die Arten von Fakten, Geschäftsregeln und andere Anforderungen, die die Datenbank modellieren soll. ___ tag123oracle11g ___ Oracle ist ein objektbezogenes Datenbankverwaltungssystem (ORDBMS), das von Oracle Corporation erstellt wurde. Bestimmte Versionen des Produkts sind als Oracle9i, Oracle10g, Oracle 11g und Oracle 12c bekannt, wobei "i", "g" und "c" für "internet", "grid" bzw. "cloud" stehen. Im Allgemeinen gibt es zwei Versionen innerhalb jeder Hauptversion. Für Fragen, die mit [oracle11g] getaggt wurden, wird angenommen, dass sie spezifisch für diese Version oder die in dieser Version eingeführten Funktionen sind. ___ qstnhdr ___ Einfache Einschränkung, um eine Oracle-Tabelle auf eine einzelne Zeile zu beschränken ___ qstntxt ___

Ich suche nach einer einfachen Möglichkeit, eine Anwendungskonfigurationstabelle auf 1 Zeile zu beschränken. Ich weiß, dass ich dies mit einer virtuellen Spalte tun kann, die eine Unterabfrage oder eine materialisierte Ansicht enthält, aber in Wirklichkeit ist es eine einfache Tabelle, für die ich eine Einschränkung brauche, die nicht mehr Zeilen benötigt, als die Tabelle zu erstellen. p>

Der einfachste Weg, an den ich gedacht habe, ist ein ID-Feld, das auf 1 gesetzt ist, und eine Check-Einschränkung, dass die ID 1 sein muss - aber das fügt der Tabelle ein verwirrendes zusätzliches Feld hinzu, also hoffe ich, dass etwas offensichtlich ist. m fehlt, wie eine Prüfbedingung, bei der UNIQUE_FIELD = MAX (UNIQUE_FIELD) nicht zulässig ist.

    
___ tag123referentielle Integrität ___ Referentielle Integrität ist eine Eigenschaft von Daten, die den Wert eines Attributs / einer Spalte einer Beziehungstabelle als Wert eines anderen Attributs / einer anderen Spalte in einer anderen Beziehungstabelle benötigt ___ answer5483714 ___
%Vor%

(ungetestet)

SQL verfügt nicht über eine präzise Syntax, um die leere Gruppe von Attributen als Schlüssel anzugeben, was eine Schande ist, da die redundante zusätzliche Spalte nicht mehr benötigt wird. Der effektive Schlüssel hier ist tatsächlich die leere Menge, weshalb ich eine UNIQUE-Einschränkung anstelle von PRIMARY KEY für die Einschränkung auf x verwendet habe.

    
___
3
Antworten

Einfache Einschränkung, um eine Oracle-Tabelle auf eine einzelne Zeile zu beschränken

Ich suche nach einer einfachen Möglichkeit, eine Anwendungskonfigurationstabelle auf 1 Zeile zu beschränken. Ich weiß, dass ich dies mit einer virtuellen Spalte tun kann, die eine Unterabfrage oder eine materialisierte Ansicht enthält, aber in W...
29.03.2011, 19:38