Hi jobo
Ganz allgemein ist es nicht empfehlenswert,
db spezifische Mechanismen bei der Modellierung zu verwenden. Wenn SQLite das mit der ROWID freiwillig in Form eines Alias macht, soll es so sein, aber selbst macht man es halt nicht, egal welche
DB.
Eigentlich hat jede
DB einen ureigenen Mechanismus, um eine Zeile selber zu adressieren und die meisten Systeme dokumentieren den auch, rowid bspw. gibt es glaub ich in verschiedenen
DB.
Wenn ich mit Workbench ein Modell zeichne, kann ich mir die
SQL dazu von Workbench erstellen lassen. Mit ForwardEngineering wird das Script für
MySQL und daraus eine ebensolche Datenbank erzeugt, per Export kann ich ein Plugin wählen(wenn installiert), das mir das Script für SQLite erstellt. Grundsätzlich sind die beiden Scripte fast gleich - beide beruhen auf SQL92, nur das für SQLite noch einige Zeilen vorangestellt werden:
Delphi-Quellcode:
-- Creator:
MySQL Workbench 6.3.8/ExportSQLite Plugin 0.1.0
-- Author: Roger
-- Caption: New Model
-- Project:
Name of the project
-- Changed: 2019-09-13 18:52
-- Created: 2019-07-31 10:50
PRAGMA foreign_keys = OFF;
-- Schema: PdfOfficerDB
ATTACH "PdfOfficerDB.sdb"
AS "PdfOfficerDB";
BEGIN;
Diese Zeilen kann ich so nicht brauchen. Schon diese Zuweisung ist falsch(wenn ich das Manual richtig versanden hab):
PRAGMA foreign_keys = OFF;
Ausser, dass Delphi dies so nicht schlucken wird (da fehlt noch ':'). müsste OFF durch ON ersetzt werden. Ausserdem sieht das von der Workbench erzeugte Script so aus:
Delphi-Quellcode:
CREATE TABLE "PdfOfficerDB"."tblStrassen"("StrassenID" INTEGER PRIMARY KEY NOT NULL,
"Strasse" VARCHAR(85));
Auch das ist falsch (die doppelten Anführungszeichen), sowohl offensichtlich für SQLite(*) als auch für Pascal. In welcher Sprache dies so eingesetzt werden kann,entzieht sich meiner Kenntnis.
Und nochwas:
Was auch immer man mit einem grafischen Tool macht, es ist interessant, die Create Anweisung selber zu schreiben und natürlich auch die gewünschten Constraints (PK, FK, usw..)
Das habe ich mehr oder weniger so vor. Vor allem entdeckte ich einige Fehler, die ich beim Entwurf mit Workbench gemacht habe. So habe ich einige PK-Felder mit 'unsigned datatype' erstellt, andere nicht - notwendig wäre es wohl nicht. Ich werde mir aber das Manual nochmal vornehmen, um mir über allfällige Konsequenzen klar zu werden.
Ansonsten wird es für jede zu erstellende Tabelle und für jeden Index eine eigene Prozedur/Funktion geben, wobei Teile des exportierten Scripts die jeweils in diesen einzusetzenden
SQL-Statements liefern.
Gruss
Delbor
* Ich meinte, ich hab das aus dem Manual, doch ich konnte die Stelle nicht mehr finden