Vinnaren i pepparkakshustävlingen!
2012-01-21, 16:04
  #1
Medlem
"Can't update table 'loan' in stored function/trigger because it is already used by statement which invoked this stored function/trigger."

Jag försöker köra följande:

INSERT INTO loan (userID, itemID)
VALUES (1, 1)

med en trigger på loan AFTER INSERT, UPDATE loan.

Varför fungerar det inte?
Citera
2012-01-21, 16:27
  #2
Medlem
precis som felmeddelande säger det:
du kan inte uppdatera den tabel triggern är baserat på.

Med Oracle har jag gjort så:
en till tabell b med samma struktur som första tabell a.
trigger på tabell a gör insert i tabel b

delar av system som behöver se båda data använder en vy : select * from a union select * from b

sen det beror på hur du använder data.
Citera
2012-01-21, 17:10
  #3
Medlem
Tack, det fungerar!

TRIGGER:
AFTER INSERT ON tabell1

INSERT INTO nytabell (tabellID, ...)
VALUES (NEW.tabellID, ...)

Eftersom jag skriver ett ID, kan jag lätt joina ihop dem sen och få fram infon som jag vill, såsom att det hade varit en och samma tabell.

Den nya tabellen kommer att få ett 1:1 förhållande med den gamla. Hoppas det är okej att ha ett 1:1 förhållande när man övergår från logisk datamodell till fysisk datamodell, pga att ens triggers kräver det.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback