java - How do I set a variable in MySQL 5.5 using JDO and DataNucleus? -
as part of audit logging process, need set variable @user_id in code before running insert into... statement. insert initiate trigger uses @user_id.
i have tried following queries:
set @user_id = 5 this not work because resultset cannot null (and query returns nothing)
select 51 @user_id this not work because again, resultset cannot null in java
select @user_id := 51 this not work because : character translated parameter token when running queries using persistencemanager , query object.
so, using datanucleus, how can set variable trigger statement succeeds necessary information auditing purposes?
my java code run queries follows:
persistencemanager pm = getpersistencemanager(); // own function persistencemanager query q = pm.newquery("javax.jdo.query.sql", "query here"); q.execute(); if cannot done, other options can try achieve same result?
edit: using google app engine, , therefore stored procedures not available me.
i couldn't find way around issues described above, instead used different approach i'll explain:
i created table named transaction_properties has 2 columns: user_id , connection_id.
before each transaction commit, insert transaction_properties table id of user (which know @ stage), , mysql placeholder connection_id(), outputs current connection id.
in trigger, use following statements find user_id transaction:
declare user_id bigint; select `userid` user_id `transaction_properties` `transaction_id` = connection_id() limit 1; if user_id null set user_id = -1; end if; i can reference declared variable user_id in insert audit table elsewhere in trigger.
Comments
Post a Comment