Mutating table - verem overflow oroszul

Van egy táblázatom, amely a sor beillesztése / törlése után változik. Vagyis a mutáció az, hogy amikor beilleszti egy táblába, akkor újra kell számítani azokat az értékeket, amelyek más sorokban vannak. Írtam egy triggeret, de nem működik, hiba történik. A probléma, ahogyan megértem, akkor fordul elő, amikor megpróbálunk elérni egy táblázatot a sor szintjének triggerjében, amely ugyanabban a mondatban változik. Mi a hiba ennek a hibának? És hogyan tudja elkerülni? És hogyan lehet újra számítani az asztali értékeket egy sor (instert / delete) módosításakor?

előre beállítva január 19-én, 17:48-kor

2 adat3 adat4 50

Bemutat egy táblát például:

id mező1 mező2 mező3

1 adat1 adat2 30

2 adat3 adat4 50

3 adat5 adat6 70

A beillesztés miatt frissítést kell végrehajtania, például minden mezőben3:

A probléma az, hogy a lezárt asztalnál fellépéseket hajt végre (nem tudom, hogy az oracle, a mysql-ről írok, azt hiszem, hogy az orákulumban ugyanaz), azaz. Az adatokat nem lehet frissíteni, törölni vagy más módon módosítani, amíg a tábla zárolva van. A mysql-ben ez a LOCK TABLE / UNLOCK TABLE. Mivel a betét még nem fejeződött be, a táblát nem lehet frissíteni, mert így megy másképp - 2 kérést, 1 hozzáadás, 2 frissítést. Elképzelhető, hogy az Oracle, akkor megtekintéséhez a frissítés az asztal, és például a második Slip Stream frissítést, vagy várjon, amíg a tábla nem „elérhető”, így elérhetővé válik a frissítés. Remélem, hogy legalábbis valahogy segítettem.

válaszolt 19 Jan. 11-én, 21:43-kor

Tu Alex Silaev. Az adatok elolvasásához nincs szükség adatok blokkolására. Az Oracle nem MySQL. Továbbá, az olvasás nem követeli meg az asztal kiadását, többváltozatú implementációt hajtanak végre a visszagörgetési szegmensek használatával.

Általában a mutációs tábla hibája két módon megoldható:

  1. Indítsa el az autonóm átmeneteket, de az Oracles koracherek nem javasolják használni.
  2. És még biztosabban. Késleltetett feldolgozás az AFTER triggerben, amint az javasolt (14 Március 14:09) andivanov. Mentsd el az adatokat egy tömbben, majd jelölje ki őket.

A válasz 24 augusztus 11-én 15: 46-ban érkezik

Szeretném megnézni a triggered kódját.

Vázolt egy kis példát, azt hiszem, ő fogja irányítani.

válaszolt a február 3-án, 11:26-kor

Kapcsolódó cikkek