【发布时间】:2014-04-09 16:03:50
【问题描述】:
作为我的审计日志记录过程的一部分,我需要在运行INSERT INTO... 语句之前在我的代码中设置一个变量@user_id。 INSERT 将启动一个使用@user_id 的TRIGGER。
我尝试了以下查询:
SET @user_id = 5
这不起作用,因为ResultSet 不能是NULL(并且此查询不返回任何内容)
SELECT 51 INTO @user_id
这不起作用,因为 ResultSet 在 Java 中不能是 NULL
SELECT @user_id := 51
这不起作用,因为在使用PersistenceManager 和Query 对象运行查询时,: 字符被转换为参数标记。
那么,使用 DataNucleus,我如何设置一个变量,以便我的 TRIGGER 语句成功并提供用于审计目的的必要信息?
我运行查询的 Java 代码如下:
PersistenceManager pm = getPersistenceManager(); // My own function to get the PersistenceManager
Query q = pm.newQuery("javax.jdo.query.SQL", "QUERY HERE");
q.execute();
如果无法做到这一点,我可以尝试哪些其他选项来达到相同的结果?
编辑:我使用的是 Google App Engine,因此我无法使用存储过程。
【问题讨论】:
-
定义“JDO 查询”是什么意思? JDOQL、SQL 还是其他? SQL中没有参数解析
-
@NeilStockton 抱歉,如果我不清楚。我将通过澄清更新我的问题,但我的意思是我正在运行来自
PersistenceManager.newQuery("javax.jdo.query.SQL", "SELECT * FROM ...")的 SQL 查询。
标签: java mysql sql jdo datanucleus