PS: Mal etwas mehr oftopic:
In den
MySQL Workbench-Einstellungen sind die FK-Namensregelung so definiert: fk_%stable%_%dtable%,
für Spaltennamen so: %table%_%column%. Da seh ich eigentlich keinen grossen Spielraum, wenn man sprechende Namen verwenden will...
Ja und? Kann man doch nach eigenen Kriterien ändern.
Und was die Workbench für
MySQL macht, muss für SQLite nicht als Gesetz gelten.
Da Du alle Statements letztlich in den Delphiquelltext übernimmst, kannst Du sie dort nach Deinen Wünschen sinnvoll und lesbar anpassen.
Wenn SQLite die Unmenge von " nicht braucht, dann weg damit.
Habe selten derart schlecht lesbare Scripte gesehen, liegt vielleicht daran, dass ich als "alter Sack" Datenbankscripte noch selbst schreiben musste und mich (als misstrauischer Knilch) nie auf automatisch erstelltes Zeug blind verlassen habe.
Für mich ist wichtig, dass sowohl lesbarer, als auch korrekt funktionierender Quelltext entsteht. Egal welche Quellen und / oder Werkzeuge die Grundlage lieferten.
Was mir erst jetzt auffiel:
Delphi-Quellcode:
procedure TDMLSQLite.ContentmasterDBCreate;
var SQLString:
String;
begin
try
DMLSQLite.FDSQLiteConnection.Connected := false;
FDSQLiteConnection.ExecSQL('
ATTACH "M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite" AS ContentMasterData');
// DMLSQLite.FDSQLiteConnection.Params.Values['Database']:='"M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite"';
// War obige Zeile nicht auskommentiert: Unbekannte Datenbank. Danach liefen alle Createanweisungen durch. Beim nächsten ExecCSQL krachte es
DMLSQLite.FDSQLiteConnection.Params.Values['
FailIfMissing']:='
False';
DMLSQLite.FDSQLiteConnection.Params.Values['
PRAGMA foreign_keys']:='
ON';
SQLiteTestMain.LBxPathlist.Items.AddStrings(FDSQLiteConnection.Params);
DMLSQLite.FDSQLiteConnection.Connected := true;
DMLSQLite.FDSQLiteConnection.GetInfoReport(SQLiteTestMain.Memo1.Lines);
Da passt was nicht: Zuerst die Datenbankverbindung beenden, dann ein ExecSQL ausführen? Wo denn, ohne Datenbankverbindung?
FDSQLiteConnection.ExecSQL('ATTACH "M:\SQLite-DB Corner\ContentMasterData\ContentMasterData.sqlite" AS ContentMasterData');
gehört hinter
FDSQLiteConnection.Connected := true;
aber vor die Createstatements.