![]() |
AW: AutoIncrement mit FireBird
Zitat:
weil viele die Daten in der DB zentral nicht wirklich sinnvoll sind und die Anwendung auch ohne Netzwerkverbindung laufen muss. Bei einem Update bringt der Installer eine neue DB Datei mit, die aber nicht so heißt wie die produktiv benutzte. Mittels einem selber geschiebenen Sync Programm werden dann die Daten aus der alten Datei in die neue kopiert und dann die neue Datei benutzt. Das Sync Programm kann auch ggf. nötige Anpassung an Daten vornehmen, dazu gibt's in der DB Datei eine eindeutige Versionskennung die dann ggf. den entsprechenden Vorgang triggert. Grüße TurboMagic |
AW: AutoIncrement mit FireBird
Das kann man machen, neue Datenbank mit den "Alten" Daten füllen und dann die neue verwenden. Ist aber wesentlich aufwendiger als die Bestehende zu ändern. Fehler sind natürlich auch möglich, etwa wenn man vergisst die Tabelle X zu füllen usw. .
Einmal ist wohl kein Problem, aber was ist wenn der Benutzer 4 Updates auslässt und gleich von 1.5 auf 2.0 geht? Ich würde es nicht so machen. Wir lassen bei jeder Versionsänderung die ganze Datenbank prüfen und alle Tabellen, Proceduren, Trigger usw. wenn nötig anpassen. Dauert manchmal etwas und kann auch teilweise fehlschlagen, wenn z.B. kein exklusiver Zugriff auf die Datenbank gegeben ist. Ist aber sonst recht sicher und man kann den Vorgang auch mehrmals durchführen wenn es nicht gleich klappt. |
AW: AutoIncrement mit FireBird
Hallo zusammen,
Ich hab mich damit jetzt mal beschäftigt, und gleich noch ein Problem, oder eine Frage:
Code:
Als ich meine Id noch selbst gefüllt habe, konnte ich einfach sagen:
create table objects (
id integer generated by default as identity primary key, name varchar(15) );
Code:
Die Id-Spalte füllt er jetzt selber.
insert into objects values (17, 'Test');
Klar nun kann ich schreiben:
Code:
Das funktioniert auch, aber mach das mal mit, sagen wir, über 20 Spalten... ;-)
insert into objects (name) values ('Test');
Gibt es eine Möglichkeit beim Insert die ganze Bennennung der Spalten wegzulassen, aber so, dass er die Id selbst ausfüllt. Also sowas wie:
Code:
Wenn ich ALLE Spalten beim Insert angeben muss, nützt mich das ganze schöne Auto-Increment nix.
insert into objects values ({übergeh_die_Spalte},'Test');
Herzlich grüßt Moo |
AW: AutoIncrement mit FireBird
Gib als Wert NULL an.
|
AW: AutoIncrement mit FireBird
Nein, denn "NULL" heißt "schreib NULL in das Feld" und der Generator wird garnicht verwendet.
Es gibt einige DBMS, da kann man "DEFAULT" in INSERT-Statements benutzen. Ansonsten werden Default- oder AutoInc-Definitionen nur dann verwendet, wenn das Feld eben nicht im INSERT-Statement drin steht.
SQL-Code:
INSERT INTO objects (name) VALUES ('Test');
INSERT INTO objects (id, name) VALUES (DEFAULT, 'Test'); INSERT INTO objects (name) VALUES ('Test1'), ('Test2'), ('Test3'), ('Test4'); Zitat:
Passiert z.B. gern mal bei Updates/Upgrades, wenn man über die Jahre die DB-Struktur anpasst, und Felder hinzufügt/entfernt/umbenennt/........ |
AW: AutoIncrement mit FireBird
Huhu Himitsu,
Gut, ;-), dann schreib ich's doch um - 'grummel! Herzlichen Dank! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:18 Uhr. |
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-2025 by Thomas Breitkreuz