Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.071 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
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

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