我有一个可以设置属性的表,但是应该在一定时间后过期。如果我运行这样的查询,它会按预期工作:
update MY_TABLE
set PROP = :value, PROP_TIMEOUT = dateadd (7 day to CURRENT_TIMESTAMP)
where ID = :id
但是,如果我尝试同时检索计算的超时作为同一查询的一部分,它将返回一个空结果集,并且表中没有更新记录:
update MY_TABLE
set PROP = :value, PROP_TIMEOUT = dateadd (7 day to CURRENT_TIMESTAMP)
where ID = :id
returning PROP_TIMEOUT
这是Firebird中的错误,还是我做错了什么?使用FBEMBED版本2.5.1。
答案 0 :(得分:2)
使用RETURNING [fields]时,需要指定INTO [variables]。 INTO仅适用于PSQL
示例:
:
update MY_TABLE
set PROP = :value, PROP_TIMEOUT = dateadd (7 day to CURRENT_TIMESTAMP)
where ID = :id
returning PROP_TIMEOUT
into :ret_prop_timeout; -- variable needs to be declared
:
suspend; -- to return a output row
答案 1 :(得分:0)
我建议您阅读此Firebird文档页面:http://www.firebirdsql.org/refdocs/langrefupd25-update-or-insert.html