Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Int-Feld nachträglich auf autoincrement setzen (https://www.delphipraxis.net/170447-int-feld-nachtraeglich-auf-autoincrement-setzen.html)

messie 17. Sep 2012 17:02

Datenbank: Firebird • Version: 2 • Zugriff über: FlameRobin

Int-Feld nachträglich auf autoincrement setzen
 
Moin,

ich möchte ein int-Feld (ID) in einer Tabelle nachträglich auf Autoincrement setzen und mache das mit dem FlameRobin-Dialog. Dort kann ich einen Generator erzeugen oder auswählen und einen Trigger erzeugen. Das sieht alles richtig aus, wenn ich Daten übergebe schlägt es aber fehl:
Code:
insert into MEASURED_DATA values (ID,1,2,3,4)
Klappt das nachträgliche Ändern nicht oder passt meine Übergabe nicht? Wenn ich die Autoincrement-Spalte weglasse, bekomme ich ein mismatch beim parametercount.

Grüße, Messie

himitsu 17. Sep 2012 17:09

AW: Int-Feld nachträglich auf autoincrement setzen
 
Du solltest die Namen der Felder mit angeben, sonst weiß ja keiner was wo rein soll :zwinker:

[add]
www.w3schools.com/sql/sql_insert.asp
http://www.firebirdsql.org/refdocs/l...21-insert.html

Namenloser 17. Sep 2012 17:09

AW: Int-Feld nachträglich auf autoincrement setzen
 
Du musst in dem Fall die Spalten explizit angeben:

Code:
insert into MEASURED_DATA (spalte_a, spalte_b, spalte_c, spalte_d) values (1,2,3,4)

messie 17. Sep 2012 17:23

AW: Int-Feld nachträglich auf autoincrement setzen
 
Moin,

klappt so, danke!
Ich kann aber tatsächlich
Code:
insert into MEASURED_DATA values (35,1,2,3,4)
die Einträge auch ohne Bezeichner erzeugen, dabei wird dann aber wohl die autoincrement-Variable überschrieben.
Wahrscheinlich schreibt außer mir niemand immer die ganze Zeile :wink:
Ist eben ein Umbau eines Programms von Dateien auf Datenbank. Und da habe ich die ganze Zeile halt da...

Grüße, Messie

himitsu 17. Sep 2012 17:27

AW: Int-Feld nachträglich auf autoincrement setzen
 
Es wird nicht nur das Autoinc überschrieben (es wird gesetzt und nicht automatisch bestimmt), sondern rate mal was passiert, wenn sich mal das Datenbankschema ändert und die Felder in einer anderen Reihenfolge vorliegen. :wink:

Vielleicht ist es keine schlechte Idee immer die Feldnamen anzugeben.

DeddyH 17. Sep 2012 17:40

AW: Int-Feld nachträglich auf autoincrement setzen
 
Ob der "AutoInc"-Wert überschrieben wird, hängt davon ab, wie der zugehörige Trigger aussieht ;)

mkinzler 17. Sep 2012 17:41

AW: Int-Feld nachträglich auf autoincrement setzen
 
Zudem muss man den Initialwert anpassen, sonst gibt es eine Kollision

p80286 17. Sep 2012 17:51

AW: Int-Feld nachträglich auf autoincrement setzen
 
Zitat:

Zitat von mkinzler (Beitrag 1183326)
Zudem muss man den Initialwert anpassen, sonst gibt es eine Kollision

Was meinst du damit?
Code:
Autoincint=max(altespalte)+1
soetwas?

Gruß
K-H

DeddyH 17. Sep 2012 17:53

AW: Int-Feld nachträglich auf autoincrement setzen
 
Klar, initial steht der auf 1, das kann nur gut gehen, wenn noch keine Daten vorhanden sind. Falls doch, muss er halt auf Maximalwert + 1 gesetzt werden.

mkinzler 17. Sep 2012 17:55

AW: Int-Feld nachträglich auf autoincrement setzen
 
SQL-Code:
set generator <GeneratorName> to <NächsterWert>;


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:09 Uhr.
Seite 1 von 4  1 23     Letzte »    

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