Autor Téma: Trigers - Deadlock  (Přečteno 1689 krát)

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Trigers - Deadlock
« kdy: 09-11-2018, 09:34:14 »

Neviem ako som sa dostal do tejto situácie:


Project JasotSVB.exe raised exception class EIBNativeException with message '[FireDAC][Phys][FB]deadlock
update conflicts with concurrent update
concurrent transaction number is 65633
At trigger 'SEPA_ANALS_BI' line: 8, col: 5'.
Kód: [Vybrat]
BEGIN
  IF (NOT EXISTS(SELECT FIRST 1 * FROM SEPA_ANALS)) THEN
    DELETE FROM Z_SEPA_ANALS;
END
[size=78%]

Ako sa toho zbaviť? Myslím tým zrušenie zámku.
Obe tabuľky (SEPA_ANALS i Z_SEPA_ANALS) sú prázdne.
Ako sa to ošetruje v kóde?[/size]
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:Trigers - Deadlock
« Odpověď #1 kdy: 09-11-2018, 09:35:41 »
Prečo mi tam pri vkladaní textu Ctrl+v vždy doplní ten size? Teraz som sa ho nedokázal zbaviť.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Jirka

  • Plnoletý
  • ***
  • Příspěvků: 141
  • Karma: 8
    • Verze Delphi: XE2
Re:Trigers - Deadlock
« Odpověď #2 kdy: 09-11-2018, 11:44:52 »
update conflicts with concurrent update
concurrent transaction number is 65633

IMHO nemáš někde dokončenou jinou transakci - pravděpodobně k souboru Z_SEPA_ANALS.
Tohle se mi občas stavá v IBExpertu když se pokouším modifikovat data která jsou otevřena v jiném okně
« Poslední změna: 09-11-2018, 11:49:06 od Jirka »

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:Trigers - Deadlock
« Odpověď #3 kdy: 09-11-2018, 12:18:00 »
Nejde mi o vyriešenie príčiny. To sommal ihneď. Zle zostavené SQL.
Ale zbaviť sa toho stavu. Druhá vec je, či sa mi to môže stať v aplikácii. Ak áno, tak ako to riešiť.
V jednom prípade som tým mal veľký problém.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:Trigers - Deadlock
« Odpověď #4 kdy: 09-11-2018, 12:38:49 »
Ja som sa k tomu dopracoval tak, že mi vykonávanie SQL nechcelo skončiť. Pritom aplikácia "neodpovedala" ale nežrala žiadne systémové prostriedky.
Tak som aplikáciu zostrelil - Reset. A už mi ostala visieť neukončená transakcia. Prvý krát v živote. Presnejšie trigget.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:Trigers - Deadlock
« Odpověď #5 kdy: 09-11-2018, 15:31:33 »
Upresním to SQL. Aby som tam jednu hodnotu nepočítal/neurčoval 3 x, tak som použil CTE.
V časti WITH som najprv mal jednoduchý SELECT. To bežalo bezproblémovo.
V rámci zmien som neskôr do WITH strčil SQL, ktoré ten WITH používa. Len som vracal jeden stĺpec. A už to bolo. Ja vlastne neviem čo som tým spôsobil. Nekonečná slučka to nie je - program nevykazoval činnosť.
Niečo také sa mi do finálnej aplikácie nedostane, lebo pri ladení mi to padne.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.

Offline Stanislav Hruška

  • Padawan
  • ******
  • Příspěvků: 4341
  • Karma: 38
    • Verze Delphi: XE7 professional
Re:Trigers - Deadlock
« Odpověď #6 kdy: 09-11-2018, 15:32:35 »
Jaj, nekončná slučka to môže byť, lebo ju spracováva DB a nie aplikácia.
Delphi XE7, FireBird
Expert na kladenie nejasne formulovaných otázok.