AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

AutoIncrement mit FireBird

Ein Thema von Marco Steinebach · begonnen am 15. Apr 2021 · letzter Beitrag vom 15. Jul 2021
Antwort Antwort
Seite 2 von 2     12   
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.942 Beiträge
 
Delphi 12 Athens
 
#11

AW: AutoIncrement mit FireBird

  Alt 18. Apr 2021, 10:02
Hallo zusammen,
Erstmal ganz herzlichen Dank an alle für die Antworten. Meine Güte, , ich glaube, ich muss mal meine Suchmaschine reparieren, die Links, die bei euch gleich oben standen, hat google mir nicht ausgespuckt - oder es war schon zu spät nachts.
Jedenfalls hab ich's jetzt verstanden.

Aber trotzdem nochmal eine blöde Frage:
Ich hab noch nicht wirklich verstanden, warum ich die DB nicht mit meinem Programm erstellen soll, gut, wenn ich gleich eine DB mit ausliefere, die toll ist, wird mein Quell-Code natürlich entsprechend kleiner, weil die ganzen Befehle da nicht drin sind, soweit so klar.
Mein Kunde hat also Version 1.5 meines Programms, und version 1.5 der passenden Datenbank.
Wo kommt die überhaupt hin, eine Tabelle für sowas?
Jetzt gibt es die Version 1.6.
Dafür müsste, die Datenbank 1.5 des Kunden, einige Änderungen machen, die aber, so sagt ihr, nicht mein Programm macht...
Sondern wer?
Also auf deutsch, V1.5 hat bei den Adressen noch keinen Spitznamen, die V1.6 schon.
Ich hätte jetzt einfach in mein Programm ein Alter Table gemacht, falls es die Spalte "spitzname" nicht gibt.
Wie macht ihr das?

Ich bin echt gespannt und grüße herzlich
Wandogau
In meinem Fall nutzt jede Installation des Programms eine lokale DB,
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
  Mit Zitat antworten Zitat
Neumann

Registriert seit: 6. Feb 2006
Ort: Moers
535 Beiträge
 
Delphi 11 Alexandria
 
#12

AW: AutoIncrement mit FireBird

  Alt 18. Apr 2021, 10:30
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.
Ralf
Gruß vom Niederrhein
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#13

AW: AutoIncrement mit FireBird

  Alt 15. Jul 2021, 07:49
Hallo zusammen,
Ich hab mich damit jetzt mal beschäftigt, und gleich noch ein Problem, oder eine Frage:
Code:
create table objects (
  id integer generated by default as identity primary key,
  name varchar(15)
);
Als ich meine Id noch selbst gefüllt habe, konnte ich einfach sagen:
Code:
insert into objects values (17, 'Test');
Die Id-Spalte füllt er jetzt selber.
Klar nun kann ich schreiben:
Code:
insert into objects (name) values ('Test');
Das funktioniert auch, aber mach das mal mit, sagen wir, über 20 Spalten...
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:
insert into objects values ({übergeh_die_Spalte},'Test');
Wenn ich ALLE Spalten beim Insert angeben muss, nützt mich das ganze schöne Auto-Increment nix.

Herzlich grüßt
Moo
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#14

AW: AutoIncrement mit FireBird

  Alt 15. Jul 2021, 08:08
Gib als Wert NULL an.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#15

AW: AutoIncrement mit FireBird

  Alt 15. Jul 2021, 09:34
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:
insert into objects values (17, 'Test');
Sowas macht man eh nicht, also ohne die Feld-Definitionen, denn das knallt schnell mal, wenn die Felder in der DB nicht der "erwarteten" Reihenfolge entsprechen, oder gar mehr Felder vorhanden sind.
Passiert z.B. gern mal bei Updates/Upgrades, wenn man über die Jahre die DB-Struktur anpasst, und Felder hinzufügt/entfernt/umbenennt/........
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
502 Beiträge
 
Delphi 5 Enterprise
 
#16

AW: AutoIncrement mit FireBird

  Alt 15. Jul 2021, 09:57
Huhu Himitsu,
Gut, , dann schreib ich's doch um - 'grummel!
Herzlichen Dank!
Marco Steinebach
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:20 Uhr.
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