Autor Téma: Príkaz MERGE INTO - neviem tam dostať správne hodnoty.  (Přečteno 495 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Nechápem, nerozumiem a vôbec mi to nejde do hlavy. Mám nasledovný kód. Všetko je dobre až na hodnotu (N_PENALTY) N_PURGE. Nedokážem ju nijako aktualizovať. Tie hodnoty 40 a 50 tam sú zo skúšobných dôvodov. Neaktualizuje sa ani jedna. Ani jedno pole (N_PENALTY i N_PURGE) z nich nie je v zdrojových tabuľkách. Len v cieľovej.
Kód: [Vybrat]
  Result := 'MERGE INTO CONS_OW_SUMS COS USING'+
  ...
  ' WHEN MATCHED THEN UPDATE SET N_PENALTY = 40, N_PURGE = 50'+
  ' WHEN NOT MATCHED THEN INSERT (N_PENALTY, N_PURGE) VALUES (40, 50)';
.
  FqryUpdateNPurge.SQL.Text := 'UPDATE CONS_OW_SUMS SET N_PURGE = 50, N_PENALTY = 40';
Neprejaví sa ani uvedený príkaz UPDATE. Táto skutočnosť ma úplne ničí. Ak UPDATE urobím dodatočne v DB manager-i, tak pekne zbehne.
Po dlhom čase sa ma chytá zúfalstvo.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline pepak

  • Padawan
  • ******
  • Příspěvků: 1559
  • Karma: 37
    • Pepak.net
Re:Príkaz MERGE INTO - neviem tam dostať správne hodnoty.
« Odpověď #1 kdy: 29-02-2020, 05:57:03 »
Zkontroluj si triggery.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Príkaz MERGE INTO - neviem tam dostať správne hodnoty.
« Odpověď #2 kdy: 29-02-2020, 08:27:22 »
Konkrétne pri tejto tabuľke nemám žiadne. Prerobím to na klasické Delete + Insert Into. Tam nebude problém. Celé to je súčasťou dlhej reťaze príkazov SQL (odhadom 30) v jedinej transakcii. A to je jediné, kde mám problém.
No potešilo by ma, keby sa niekomu podarilo prísť na koreň veci.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 6141
  • Karma: 44
    • Verze Delphi: W10 + D11
Re:Príkaz MERGE INTO - neviem tam dostať správne hodnoty.
« Odpověď #3 kdy: 29-02-2020, 08:48:23 »
Už som to našiel. Zlé poradie príkazov! Dalo mi to zabrať.
W10 64b, Delphi 10.4, FireBird 3.08
Expert na kladenie nejasne formulovaných otázok.