[ERLEDIGT] SQLite - Foreign Key sind Opt-In??

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
Benutzeravatar
Zvoni
Beiträge: 615
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

[ERLEDIGT] SQLite - Foreign Key sind Opt-In??

Beitrag von Zvoni »

Mahlzeit.

Bin heute über etwas gestolpert:
Anscheinend ist in Freepascal - sqldb die Option "enforce foreign Keys" für sqlite3conn ein "Opt-in", heisst "foreign_keys=on" muss explizit als Param gesetzt werden, wenn man die Verbindung etabliert. Wenn man es nicht setzt, passiert nämlich später gar nichts.
Ist mir nämlich passiert.
Hab Test-Daten hin- und her gebucht, und mich dauernd gewundert, warum die Detail-Sätze nicht mit über den Jordan flogen bzw. warum ich keine Exception bekam, wenn ich ein ON DELETE RESTRICT hatte

Für MySQL et al ist aber "enforce foreign keys" out of the Box (glaube ich zumindest).

Kann jemand prüfen, ob das mit ZEOS/SQLite auch der Fall ist? (Hab kein ZEOS und will es auch nicht unbedingt installieren)

Hintergrund: GGfs. den Vorschlag an die Devs/Maintainers machen, das mal über einen Kamm zu scheren.

Meinungen?
Zuletzt geändert von Zvoni am Mi 25. Mär 2026, 08:00, insgesamt 1-mal geändert.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 7251
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: SQLite - Foreign Key sind Opt-In??

Beitrag von af0815 »

Zvoni hat geschrieben: Di 24. Mär 2026, 08:44 Hintergrund: GGfs. den Vorschlag an die Devs/Maintainers machen, das mal über einen Kamm zu scheren.
Copyrigth MvC: "It's per design, won't fix'
Es ist sicher ein feature, wenn es bei den anderen DB Systemen funktioniert. Ich habe da einige Diskussionen mit MvC bezüglich automatischer Transaktionssteuerung geführt. Für ihn ist automatisch nicht unbedingt automatisch, gerade bei Stored Procedures nicht, die von SQLdb im Hintergrung still und heimlich Rollbacked werden. Wenn ein select und ein update bei einem System gehen und das andere über Einstellungen im Treiber -> s.o.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Zvoni
Beiträge: 615
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: SQLite - Foreign Key sind Opt-In??

Beitrag von Zvoni »

af0815 hat geschrieben: Di 24. Mär 2026, 10:55 Copyrigth MvC: "It's per design, won't fix'
Es ist sicher ein feature, wenn es bei den anderen DB Systemen funktioniert. Ich habe da einige Diskussionen mit MvC bezüglich automatischer Transaktionssteuerung geführt. Für ihn ist automatisch nicht unbedingt automatisch, gerade bei Stored Procedures nicht, die von SQLdb im Hintergrung still und heimlich Rollbacked werden. Wenn ein select und ein update bei einem System gehen und das andere über Einstellungen im Treiber -> s.o.
Ernsthaft??
Uff.....hätte ich jetzt nicht erwartet.
OK, aber ist halt eine Aussage, und somit der Thread dann auch beendet.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Socke
Lazarusforum e. V.
Beiträge: 3186
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: SQLite - Foreign Key sind Opt-In??

Beitrag von Socke »

af0815 hat geschrieben: Di 24. Mär 2026, 10:55
Zvoni hat geschrieben: Di 24. Mär 2026, 08:44 Hintergrund: GGfs. den Vorschlag an die Devs/Maintainers machen, das mal über einen Kamm zu scheren.
Copyrigth MvC: "It's per design, won't fix'
Ihr müsste ja nicht alles auf die FreePascal Maintainer schieben. Hier wird einfach der Standard der jeweiligen Datenbank übernommen.
  • In MySQL ist die Prüfung per Standard aktiv, kann aber global oder per Session deaktiviert werden: If set to 1 (the default), foreign key constraints are checked. If set to 0, foreign key constraints are ignored [...] Quelle https://dev.mysql.com/doc/refman/8.4/en ... key_checks
  • In SQLite3 ist die Prüfung per Standard abgeschaltet: As of SQLite version 3.6.19, the default setting for foreign key enforcement is OFF. However, that might change in a future release of SQLite. Quelle: https://sqlite.org/pragma.html#pragma_foreign_keys
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
Zvoni
Beiträge: 615
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

[ERLEDIGT] SQLite - Foreign Key sind Opt-In??

Beitrag von Zvoni »

Socke hat geschrieben: Di 24. Mär 2026, 19:57 Ihr müsste ja nicht alles auf die FreePascal Maintainer schieben. Hier wird einfach der Standard der jeweiligen Datenbank übernommen.
  • In MySQL ist die Prüfung per Standard aktiv, kann aber global oder per Session deaktiviert werden: If set to 1 (the default), foreign key constraints are checked. If set to 0, foreign key constraints are ignored [...] Quelle https://dev.mysql.com/doc/refman/8.4/en ... key_checks
  • In SQLite3 ist die Prüfung per Standard abgeschaltet: As of SQLite version 3.6.19, the default setting for foreign key enforcement is OFF. However, that might change in a future release of SQLite. Quelle: https://sqlite.org/pragma.html#pragma_foreign_keys
Argghh...... RTFM....Mist...übersehen.
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Socke
Lazarusforum e. V.
Beiträge: 3186
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: [ERLEDIGT] SQLite - Foreign Key sind Opt-In??

Beitrag von Socke »

Zvoni hat geschrieben: Mi 25. Mär 2026, 08:00 Argghh...... RTFM....Mist...übersehen.
So wollte ich es nich ausdrücken :roll: - das müssen sich schon immer meine Kollegen anhören :lol:
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Benutzeravatar
Zvoni
Beiträge: 615
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz/FPC fixes)
CPU-Target: 64Bit
Wohnort: BW

Re: [ERLEDIGT] SQLite - Foreign Key sind Opt-In??

Beitrag von Zvoni »

Socke hat geschrieben: Mi 25. Mär 2026, 08:54
Zvoni hat geschrieben: Mi 25. Mär 2026, 08:00 Argghh...... RTFM....Mist...übersehen.
So wollte ich es nich ausdrücken :roll: - das müssen sich schon immer meine Kollegen anhören :lol:
Da ich es auch gerne benutze, muss ich es akzeptieren, wenn es mir an den Kopf geworfen wird.
Von daher..... :lol: :lol: :lol: :lol:
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

Antworten