Ich habe eine vorhandene Tabelle emp_table (pk_emp, Name, Adresse, Kontakt, dob). Diese Tabelle enthält mehr als 10000 Datensätze. Jetzt brauche ich eine Sequenz, um Daten in diese Tabelle mit nächsten pk_emp Wert einzufügen. Wie sollte ich diese Sequenz erstellen, die mit dem nächsten Wert pk_emp beginnt und für zukünftige Einfügungen in dieser Tabelle verwendet werden kann.Verwenden Sie Sequenz für Autoinkrement PK der vorhandenen Tabelle
Antwort
In Oracle können Sie Sequenz erzeugen, die einen Wert von beginnt Sie wollen (alles, was Sie tun müssen, ist setzen START WITH
):
https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_6014.htm
etwas wie folgt aus:
CREATE SEQUENCE pk_emp_seq
START WITH 10000 -- specify the right value here
INCREMENT BY 1
NOCACHE
NOCYCLE;
Bearbeiten: Wenn Sie eine dynamische Implementierung wollen, versuchen Sie Putti ng den Code oben in execute immediate
:
https://docs.oracle.com/database/122/LNPLS/EXECUTE-IMMEDIATE-statement.htm#LNPLS01317
declare
start_with emp_table.pk_emp%Type;
begin
select max(pk_emp) + 1
into start_with
from emp_table;
-- the same create sequence as in the sample above, but with dynamic "parameter"
execute immediate
'CREATE SEQUENCE pk_emp_seq
START WITH ' || To_Char(start_with) ||
' INCREMENT BY 1
NOCACHE
NOCYCLE';
end;
Ja, ich habe auch das gleiche getan, es funktioniert gut. Aber ich brauche einen dynamischen Wert bei start with clause, der der nächste Maximalwert von pk_emp sein sollte. Das liegt daran, dass die Abfrage in einer anderen Umgebung ausgeführt werden muss, in der ich den maximalen Wert von pk_emp nicht kenne. – Vimal
@Vimal: Wenn Sie ein * Skript * wollen, das Sie auf * verschiedenen Datenbanken * (Schemas) ausführen können, können Sie versuchen, 'execute sofort' auszuführen. –
Ja. Es funktioniert gut. Vielen Dank – Vimal
- 1. Verwenden Sie TemplateField als PK für GridView
- 2. Verwenden PK einer Tabelle als die PK für eine andere
- 3. wie Identität (Autoinkrement) für die Spalte der vorhandenen erstellten Tabelle in SQL Server?
- 4. Tabelle ohne AI (Auto_Increment) PK? Verwenden Sie stattdessen den Text PK
- 5. Erstellen Sie öffentliche Synonyme für Tabelle und Sequenz in Orakel
- 6. abrufen PK der gemappten Tabelle mit NHibernate
- 7. Erstellen Tabelle für Fibonacci Sequenz
- 8. Verwenden der vorhandenen Datenbank für Mobile App?
- 9. Was passiert, wenn Autoinkrement mit vorhandenen Daten in MySQL kollidiert?
- 10. ID Autoinkrement/Sequenz Emulation mit CassandraDB/MongoDB etc
- 11. Wie die @TableGenerator Anmerkung für eine nicht-PK-ID verwenden
- 12. Swift: Möchten Sie Erweiterung verwenden für die Funktion der vorhandenen
- 13. Abrufen der Spaltenliste für eine PK
- 14. Kann eine Tabelle die FK der übergeordneten Tabelle als PK verwenden
- 15. Füllfaktor der vorhandenen Tabelle ändern
- 16. Hibernate erwartet Sequenz statt Tabelle für Postgres
- 17. Wie verwende ich eine benutzerdefinierte Oracle-Sequenz für Django Model PK?
- 18. TYPO3: TCA für die Verwendung der vorhandenen Tabelle konfigurieren
- 19. So fügen Sie eine Sequenzspalte zu einer vorhandenen Tabelle mit Datensätzen hinzu
- 20. SQL Server: beliebig Autoinkrement der Primärschlüssel
- 21. Sequenz für die Tabelle in cassandra
- 22. Wählen Sie die richtigen Daten, wenn DB komplexe PK-Tabelle
- 23. Wie erstelle ich eine Ersatzschlüsselspalte in der vorhandenen Tabelle?
- 24. Autoinkrement nicht
- 25. Autoinkrement funktioniert nicht richtig in Tabelle
- 26. Bestehende Tabelle Autoinkrement Primärschlüssel hinzufügen - SQL
- 27. MySql Tabelle Autoinkrement steckte auf 0
- 28. SQL Warum PK-Index nicht verwenden?
- 29. Subprozess für Sequenz von Terminalbefehlen verwenden
- 30. Autoinkrement-Spalte
https://docs.oracle.com/cd/B12037_01/server.101/b10759/statements_6014.htm 'erstellen oder Sequenz ersetzen ... Start mit ... ' –
Welche Oracle-Version verwenden Sie? –