AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fremdschlüssel löschen.
Thema durchsuchen
Ansicht
Themen-Optionen

Fremdschlüssel löschen.

Ein Thema von Walter Landwehr · begonnen am 28. Feb 2018 · letzter Beitrag vom 1. Mär 2018
Antwort Antwort
Seite 2 von 2     12   
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#11

AW: Fremdschlüssel löschen.

  Alt 1. Mär 2018, 11:41
Heißt das, dass Du sowas nicht machen kannst?
Delphi-Quellcode:
qry.SQL.Text := 'drop table irgendeinetabelle';
qry.ExecSQL;
Was wird denn dann aus
Delphi-Quellcode:
qry.SQL.Text := 'delete from tabelle where id = 1';
qry.ExecSQL;
oder
Delphi-Quellcode:
qry.SQL.Text := 'update tabelle set wert = 1234 where id = 1';
qry.ExecSQL;
Bei Open frag' ich in der Regel per Rec(ord)Count ab, wieviele Ergebniszeilen es so gibt.

Bei ExecSQL bekommt man ggfls. über RowsAffected die Anzahl der geänderten / gelöschten / eingefügten Sätze mit.

Bei manchen Komponenten ist ExecSQL 'ne Funktion, die bei Erfolg true und bei Misserfolg false ist oder bei Misserfolg fliegt 'ne Ausnahme.

Allerdings: Einheitlich ist da nun wirklich nicht geregelt, was den Wechsel der Komponenten zuweilen schon recht aufwändig machen kann.
Und einheitliche Lösungsvorschläge fast unmöglich.
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#12

AW: Fremdschlüssel löschen.

  Alt 1. Mär 2018, 11:42
Innerhalb von StoredProcs (Postgres) kann man PERFORM FunktionDieEtwasMachtAberKeinResultHat(); machen,
aber in Query/Script-Kompnenten geht nur SELECT FunktionDieEtwasMachtAberKeinResultHat(); und schon bringt der Code von Delphi.Narium leider nichts, bzw. funktioniert zur Hälfte nicht.
Ich verstehe nicht, wo du meinst, dass etwas doppelt/mehrfach ausgeführt wird.
Ist es so gemeint, wie mkinzler schrieb, also eine falsche Interpretation aus Delphi mit erneutem Ausführen? Oder anders?
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Fremdschlüssel löschen.

  Alt 1. Mär 2018, 12:59
Wie gesagt, das bezieht sich jetzt auf Postgres mit PgDAC.
k.A. ob es solche Probleme auch bei anderen DBMS und Zugriffskomponenten gibt.#
War als Beispiel erwähnt, dass Fehlermeldungen nicht immer "ganz" richtig sein müssen.

Also, irgendwo inderhalb einiger Query-Komponenten (z.B. TPgQuery) wird scheinbar bei fehlendem Result die Abfrage nochmal ausgelöst, beim Open/OpenTable. (nicht beim Execute/ExecSQL)
Ganz tief in den Klassen.
Der PgSQLMonitor bekommt die wiederholte Anfrage nicht mit, drum hatte es auch etwas länger gedauert das Problem zu identifizieren, vorallem da es im Programm nicht immer knallt. (das untere Beispiel ist bei uns aber reproduzierbar)

Zum Test: Das Erstellungsscript und 3 Test-Scripte/Queries
SQL-Code:
CREATE OR REPLACE FUNCTION SetSetting(Name VARCHAR, Value INTEGER) RETURNS VOID AS $$
BEGIN
  -- hier INSERT or UPDATE
  RETURN;
END$$ LANGUAGE plpgsql;

SELECT SetSetting('Test', 0); -- hier fällt es "nicht" auf, wenn es doppelt gesetzt wird

SELECT SetSetting('Test', GetSetting('Test') + 1); -- hier dagegen ist es +2
--SELECT GetSetting('Test'); -- beide SQL gemeinsam ausgeführt zählen direkt in Zweierschritten hoch und zeigen es sofort an

SELECT GetSetting('Test');
Das tritt auch manchmal auf, wenn ein SELECT ein Result liefert, aber in einem der Felder der "Fehler" liegt.
SELECT 'abc', SetSetting('Test', +1); -- machmal, aber nicht immer doppelt ... Muster noch nicht gefunden
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Mär 2018 um 13:02 Uhr)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#14

AW: Fremdschlüssel löschen.

  Alt 1. Mär 2018, 13:31
Ok, ich arbeite nicht mit den Komponentenm, aber das ist ja etwas gruselig.
Ich gehe mal davon aus, dass Ihr einen zuverlässigen Workaround habt, sonst könnte man das Konstrukt ja nicht gebrauchen mit den Komponenten.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Fremdschlüssel löschen.

  Alt 1. Mär 2018, 15:39
Meistens fällt es nicht auf, bis auf paar "Sonderfälle".

SELECT wird doppelt ausgeführt, also braucht auch doppelt so lange, die beiden Abfragen ... wenn die Abfrage nun länger dauert, dann fällt das schon auf (oder man denkt erstmal das dauert wirklich so lange)

Oder wo eben mit Rückgaben gearbeitet wird, bzw. wo etwas erstellt/gelöscht wird.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  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 00:28 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