Fehler während der trigger-Ausführung - ORA-06512 - ORA-04088

Habe ich diese Tabellen

ZELLE(CellId, x0, y0, x1, y1, CurrentPhone#, MaxCalls)

TELEFON(PhoneNo, x, y, PhoneState)

STATE_CHANGE(ChangeId, TimeStamp, PhoneNo, x, y, ChangeType)

Und ich habe diese zu erstellen-trigger (der Auslöser ist obligatorisch)

Ändern der maximalen Anzahl der aktiven Anrufe: Die maximale Anzahl aktiver Anrufe mit Bezug zu einer einzigen Zelle kann reduziert werden, indem das Mobiltelefon-Netzwerk für die Verwaltung Probleme (Rückgang der MaxCalls Wert in der ZELLE Tabelle). Das update auf die MaxCalls Attribut für eine einzelne Zelle könnte es zu einer inkonsistenten situation, in der die MaxCalls Wert in der ZELLE Tabelle kleiner wird als die Anzahl der derzeit Aktiven Handys (PhoneState='Aktiv') in der betrachteten Zelle. Wenn ja, wird die entsprechende MaxCalls - Attribut aktualisiert werden muss mit der Anzahl der aktuell Aktiven Handys (PhoneState='Aktiv') in der betrachteten Zelle

Schrieb ich diesen Auslöser

create or replace trigger CELL_T1
AFTER UPDATE OF MAXCALLS ON CELL
BEGIN
UPDATE CELL E1
SET E1.MAXCALLS=(
    SELECT COO
    FROM (SELECT E2.CELLID, COO
          FROM CELL E2, (
             SELECT CELLID, COUNT(*) COO
             FROM CELL C2, TELEPHONE
             WHERE PhoneState='Active' AND x<x1 AND x>=x0 AND y<y1 AND y>=y0
             GROUP BY C2.CellId
             )TW
         WHERE E2.CELLID=TW.CELLID AND COO>E2.MAXCALLS
         )
 )
WHERE  E1.CELLID IN (
SELECT C1.CELLID
FROM CELL C1, (
            SELECT CELLID, COUNT(*) COO
            FROM CELL C3, TELEPHONE
            WHERE PhoneState='Active' AND x<x1 AND x>=x0 AND y<y1 AND y>=y0
            GROUP BY C3.CellId
            )TW1
WHERE C1.CELLID=TW1.CELLID AND COO>C1.MAXCALLS and e1.cellid=tw1.cellid
         );    
END;​

Trigger kompiliert werden, ohne ein problem; dann schrieb ich die update-Anweisung:

UPDATE CELL SET MAXCALLS=MAXCALLS-2;

aber ich habe diese Fehler:

ORA-06512: at "MATTEO.CELL_T1", line 2
ORA-04088: error during execution of trigger 'MATTEO.CELL_T1'
ORA-06512: at "MATTEO.CELL_T1", line 2
ORA-04088: error during execution of trigger 'MATTEO.CELL_T1'
ORA-06512: at "MATTEO.CELL_T1", line 2
ORA-04088: error during execution of trigger 'MATTEO.CELL_T1'
ORA-06512: at "MATTEO.CELL_T1", line 2
ORA-04088: error during execution of trigger 'MATTEO.CELL_T1'
ORA-06512: at "MATTEO.CELL_T1", line 2
ORA-04088: error during execution of trigger 'MATTEO.CELL_T1'
ORA-0
  1. UPDATE ZELLE
  2. SET MaxCalls = MaxCalls-2;

Kann ich nichts finden, was falsch ist in meinem trigger; was mache ich falsch?

  • Ich kann nicht erstellen Sie einen view oder eine Prozedur
InformationsquelleAutor user2999664 | 2013-11-16
Schreibe einen Kommentar