Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi AutoInc Value setzen per SQL (https://www.delphipraxis.net/179605-autoinc-value-setzen-per-sql.html)

haentschman 19. Mär 2014 12:22

Datenbank: NEXUS • Version: 3 • Zugriff über: nx....

AutoInc Value setzen per SQL
 
Hallo alle... 8-)

Ich hätte dann gern mal einen Notfall.

Hintergrund:
Es existiert ein Feld "ID" als AutoInc. Der "Zähler" steht auf 1. (leere Tabelle)
Nun werden per SQL in diese Tabelle Datensätze (Vorgaben) eingetragen incl. der ID. Fragt nicht nach, ist so!
Dabei wird der AutoIncCounter nicht erhöht! Das nächste Append knallt mit einer Key Violation. (ID 1 z.B.)

Die nxTables haben eine Procedure SetAutoIncValue. Damit kann man den nächsten Value per Hand vorbelegen. Dies konnte ich in einem Part so realisieren. Jetzt kommt ein anderer Part bei dem nur SQL möglich ist.

Die Frage:
Wie geht das per SQL? Die Suchergebnisse sind äußerst dürftig. Von Einträgen in den Bugtracker bis zu "Ja es geht, mit Restructure der Tabelle danach"... ohne konkrete Lösungunsansätze.:roll:
Das war am aussichtsreichsten von der Beschreibung: http://www.nexusdb.com/forums/showthread.php?t=16898

Danke für Infos. Ich suche parallel weiter. Der erste der die Lösung hat meldet sich... :thumb:

himitsu 19. Mär 2014 12:29

AW: AutoInc Value setzen per SQL
 
k.A., aber mach einfach mal ein Backup (als SQL-Skript) von der Datenbank oder einer entsprechenden Tabelle.

Da drin steht dann der Befehl, um den Wert wieder zu laden.

haentschman 19. Mär 2014 12:33

AW: AutoInc Value setzen per SQL
 
Danke für deine Idee...:thumb:
... nur gibt das der Enterprise Manager nicht her. Nur Backup in einen anderen DB Alias als Datenbank. :roll:
Wenn ich blind bin, klärt mich auf.

Uwe Raabe 19. Mär 2014 12:36

AW: AutoInc Value setzen per SQL
 
Wo liegt denn genau das Problem: werden die IDs per SQL korrekt eingetragen und du willst nur den AutoInc danach anpassen?

haentschman 19. Mär 2014 12:41

AW: AutoInc Value setzen per SQL
 
Genau. Denn durch das manuelle eintragen des AutoInc wird der Counter nicht erhöht. Ich möchte nach Abschluß der "sagen wir mal Korrekturen" den nächsten AutoInc Wert vorbelegen.

:warn: Wir sprechen nicht über den AutoInc Feldwert eines Datensatzes sondern von dem Wert den die AutoInc Engine für den nächsten AutoInc Wert vorhält.

Uwe Raabe 19. Mär 2014 12:50

AW: AutoInc Value setzen per SQL
 
Und was spricht gegen die Methode SetAutoIncValue? Soweit ich weiß, wird diese Funktionalität nicht in SQL abgebildet.

haentschman 19. Mär 2014 12:54

AW: AutoInc Value setzen per SQL
 
Spricht nichts dagegen. In einem Part des "Updates" konnte ich damit ja arbeiten. Geht auch gut. Jetzt habe ich aber einen Teil bei dem ich nur über SQL zugreifen kann und die gleiche Funktionalität benötige. :(

Uwe Raabe 19. Mär 2014 12:58

AW: AutoInc Value setzen per SQL
 
Die aktuell gültige Grammatik für SQL in NexusDB findest du in nxSQLGrammar.BNF

joachimd 19. Mär 2014 12:59

AW: AutoInc Value setzen per SQL
 
Beim ADS kann man das durch zweimaliges Ändern des Feldtypes erzwingen:
Code:
ALTER TABLE mytable ALTER COLUMN myid myid INTEGER;
ALTER TABLE mytable ALTER COLUMN myid myid AUTOINC;
Evtl geht das bei Dir auch, auch wenn es Zeit kostet.

himitsu 19. Mär 2014 13:02

AW: AutoInc Value setzen per SQL
 
Hab das halt bei einigen Datenbanken mitbekommen, wo man sich ein Backup als SQL ausgeben lassen kann.

pgAdmin, phpMyAdmin usw.

- CREATE TABLE, INSERTs mit den Daten, CREATE TRIGGER und was sonst noch alles nötig ist, um die Datenbank neu einzuspielen.

Zitat:

ALTER TABLE mytable ALTER COLUMN myid myid INTEGER;
ALTER TABLE mytable ALTER COLUMN myid myid AUTOINC;
Er hat ja schon das Feld.
Ihm fehlt nur noch der Wert, welcher beim nächsten Insert genommen wird. (wenn ich das richtig bverstanden hab)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz