Der Befehl
Code: Alles auswählen
DELETE FROM tbl WHERE col_1 = :id
Ich habe eine SQLite3 Datenbank mit 2 Tabellen und einem Fremdschlüssel (ON DELETE CASCADE ON UPDATE CASCADE). Mittels o. g. Befehl lösche/bearbeite ich nun in der Haupttabelle die entsprechende und ausgewählte Zeile. Im DB Browser funktioniert es problemlos. Führe ich den o. g. Befehl nun in Lazarus aus, passiert nur eins. Die Zeile in der Haupttabelle wird gelöscht. Die mitzulöschenden Zeilen in der Untertabelle bleibt bestehen.
Hier die Struktur meiner beiden Tabellen
Code: Alles auswählen
CREATE TABLE "gruppen" (
"gruppenID" INTEGER NOT NULL,
"gruppenName" TEXT,
"gruppenBeschreibung" TEXT,
"gruppenDatum" NUMERIC,
PRIMARY KEY("gruppenID" AUTOINCREMENT)
);
Code: Alles auswählen
CREATE TABLE "personen" (
"personenID" INTEGER NOT NULL,
"gruppenID" INTEGER NOT NULL,
"personenName" TEXT,
FOREIGN KEY("katID") REFERENCES "gruppen"(gruppenID") ON DELETE CASCADE ON UPDATE CASCADE,
PRIMARY KEY("personenID" AUTOINCREMENT)
);
Code: Alles auswählen
var
gID : Integer;
begin
ZQuery.Params.Clear;
ZQuery.Params.CreateParam(ftInteger, 'gruppenID', ptinput);
ZQuery.ParamByName('gruppenID').Value:=gID;
ZQuery.SQL.Text:='DELETE FROM gruppen WHERE gruppenID = :gID';
ZQuery.ExecSQL;
end;
Kann mir jemand sagen, warum das so ist?
Benutzen tu ich:
Lazarus: 2.0.10
ZEOS: 7.2.8
DB Browser 3.12.1
SQLite3 3.33.0
Liebe Grüße
BerlinerBaer