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ó:
- Indítsa el az autonóm átmeneteket, de az Oracles koracherek nem javasolják használni.
- É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