开发者

No data found in trigger

开发者 https://www.devze.com 2023-04-11 10:52 出处:网络
I have a problem with my trigger. It returns \"no data found\" and i don\'t know how to resolve it. Can you help me ?

I have a problem with my trigger. It returns "no data found" and i don't know how to resolve it. Can you help me ?

create or replace
TRIGGER nb_action
    AFTER INSERT ON Message
  FOR EACH ROW
DECLARE
    vAuteur integer;
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
    SELECT id_auteur INTO vAuteur FROM Message where id_message = :new.id_message;
  UPDATE Utilisateur SET nb_action=nb_act开发者_Go百科ion+1 where id_utilisateur=vAuteur;
END ;


Do not use autonomous transactions in normal code. The only time that autonomous transactions are really appropriate are cases when you want to write data to a log table whether or not the underlying action commits. For example, if you want to log an error, rollback the transaction, and raise the exception, you probably don't want the log message to be rolled back. You should absolutely never use an autonomous transaction to work around a mutating table exception which is, I assume, the reason you used an autonomous transaction here since the query against the Message table would raise a mutating table exception if it was not in an autonomous transaction.

Fortunately, in this case, there is no need to query the table on which the trigger is defined and no need to use an autonomous transaction. Simply

create or replace trigger nb_action
  AFTER INSERT ON Message
  FOR EACH ROW
BEGIN
  UPDATE Utilisateur 
     SET nb_action=nb_action+1 
   where id_utilisateur=:new.id_auteur;
END ;


Since you have PRAGMA AUTONOMOUS_TRANSACTION; in that trigger it means that it can't see the row just inserted because it is in a different not yet committed transaction thus your SELECT doesn't return any data...

try

create or replace
TRIGGER nb_action
    AFTER INSERT ON Message
  FOR EACH ROW
DECLARE
  PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN
  UPDATE Utilisateur SET nb_action=nb_action+1 where id_utilisateur=:new.id_auteur;
END ;
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号