wie generieren Primärschlüssel-Werte beim einfügen von Daten in Tabelle über pl/sql gespeicherten Prozedur
Ich brauche zum einfügen von Daten in bestimmte Tabellen über pl/sql gespeicherten Prozedur. Meine Anforderungen sind:
- während Sie es erzeugen soll PRIMARY KEY Werte für eine bestimmte Spalte;
- es sollte zurückgeben, dass der Wert des Primärschlüssels zu einer output-variable; und
- für eine andere Spalte sollte es bestätigen meine string so, dass sollte es enthalten nur die Zeichen, nicht zahlen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie generieren Primärschlüssel-Werte als Surrogat-Schlüssel Verwendung einer Oracle -
SEQUENCE
. Sie können eine Einschränkung auf eine Spalte, die verwendetTRANSLATE
zu prüfen, dass keine Ziffern vorhanden sind im neu eingefügten/aktualisierten Daten.Einige Beispiel-code, geeignet für SQL*Plus:
TRANSLATE
hier ist die Implementierung der check-Einschränkung. Es muss nicht alles übersetzen - es sagt einfach nur "wenn irgendwelche zahlen hier, nicht in den insert/update". Wenn er möchte, dass die insert/update erfolgreich, dann hat er entweder Umsetzung derTRANSLATE
in den code der Anwendung, oder vielleicht fügen Sie einen trigger, um es zu ändern (aber ich würde nicht empfehlen es).In oracle glaube ich, dass die "identity" - Spalte erreicht man am besten mit einer Sequenz, und einen insert-trigger, der überprüft, ob der primary key-Spalten null ist, und wenn ja, bekommt die nächste Sequenz und fügt es.
dann können Sie die "Rückkehr" - Klausel, um die neu erstellten Primärschlüssel:
die Filterung des string-Feld würde ich persönlich im code behandeln, bevor Sie zu der Datenbank (wenn das ist eine Möglichkeit). Datenbanken sind notorisch ineffizient im Umgang mit string-Operationen.