Gdzie jest błąd - Trigger ?

Gdzie jest błąd - Trigger ?
DP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0

Cześć mam taki trigger

Kopiuj
AS 
BEGIN 
    /* enter trigger code here */ 
    
    
        if (exists (SELECT r.OBECNOSC FROM REJESTRACJA_NA_ZAWODY r
       
        
        where ID_ZAWODY = 1 and
        ID_CZLONKA_KOLA = 5 and OBECNOSC = 'T'))
        
        then
        insert into WYNIKI(ID,ID_CZLONKA_KOLA,ID_ZAWODY,WYNIK)
        values(50,6,1,50);
        
END

Z ciekawości wykonałem takie zapytanie

Kopiuj

INSERT INTO WYNIKI (ID, ID_CZLONKA_KOLA, ID_ZAWODY, WYNIK)
VALUES (
    33, 
5,
1, 
100
);

Po czy dostaje

Kopiuj
QL Message : -693
Too many concurrent executions of the same request

Engine Code    : 335544663
Engine Message :
Too many concurrent executions of the same request
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger 'TEST2' line: 18, col: 9
At trigger '...

Jakieś sugestie :)?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
1

Twój trigger aktywuje sam siebie podczas gdy robi insert into wyniki, jak mniemam.

DP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 22
0
Patryk27 napisał(a):

Twój trigger aktywuje sam siebie podczas gdy robi insert into wyniki, jak mniemam.

W sumie mogło by się zgadzać bo mam before insert xd

Można to jakoś obejść :) ?

Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042
0

Można nie tworzyć triggera, który jest w stanie wywoływać sam siebie rekurencyjnie bez opamiętania :-)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.