Salve a tutti,
ho un dubbio, quasi esistenziale: un trigger qualsiasi è visto da mysql come una transazione? Mi spiego meglio, ho un trigger che inserisce un record in una tabella con l'id in auto incremento. Dopo, all'interno dello stesso trigger, devo inserire lo stesso id in un'altra tabella. Per ottenere questo id uso la seguente query (dentro il trigger):

codice:
    create trigger mioTrigger   
    after insert on tabellaTarget
    ...
    declare id_cheMiInteressa integer;

    insert into tabella1(attr1, attr2) values ('valore1', 'valore2');

    select id
    into id_cheMiInteressa 
    from tabella1
    order by id desc
    limit 1;
    ...
    insert into altraTabella(id, data) values (id_cheMiInteressa, now());
    ...
Il problema è che se due utenti inseriscono dati contemporaneamente in
codice:
tabellaTarget
vengono creati due record in
codice:
tabella1
... Quale dei due id appartiene ad un utente? Pensavo di risolvere bloccando le tabelle...
non sapendo se venga lanciato implicitamente il lock sulle tabelle ho provato ad aggiungere al codice
codice:
lock tables tabella1 write;
ma mysql mi restituisce un errore dicendomi che non è possibile usare lock all'interno di procedure salvate.
In definitiva quindi, all'interno del trigger e durante l'esecuzione dello stesso, le tabelle interessate sono messe in lock?
Grazie in anticipo!