DB2:如何生成总是作为语句使用会话用户 [英] DB2: How to get generated always as statement to work with session user

查看:291
本文介绍了DB2:如何生成总是作为语句使用会话用户的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要把一个用户标签放到一个表中,并没有设法弄清楚GENERATED FOR EACH ROW ON UPDATE AS语句如何与DB2 10.5(LUW)中的SESSION_USER变量一起使用。



管理使用一个具有假变量的函数来执行更新语句中的评估:

  CREATE OR REPLACE FUNCTION XXX.CURRENT_USER(tmp varchar(128))
SPECIFIC xxx.XXX_CURRENT_USER
返回VARCHAR(128)
包含SQL确定EXTERNAL ACTION
BEGIN
返回session_user;
END
GO

CREATE TABLE xxx(
i INTEGER,
t VARCHAR(128)一般生成(XXX.CURRENT_USER(i))

然而,对于这样的基本事情来说,这将是一个很好的hacky实现。 / p>

对于时间戳,有每一个更改更新为更改TIMESTAMP的声明,但没有其他注册变量的等价物。



帮助非常感谢

解决方案

这是否有效?

  CREATE TABLE xxx(
i INTEGER,
t VARCHAR(128)WITH DEFAULT session_user
);

我没有手头的DB2来检查,但这与使用的语法非常相似其他数据库(尽管更典型的语法不使用 WITH )。


I need to get a userstamp into a table and have not managed to figure out how the GENERATED FOR EACH ROW ON UPDATE AS statement works with the SESSION_USER variable in DB2 10.5 (LUW).

Managed to get an implementation working using a function which has a fake variable for forcing the evaluation in update statements:

CREATE OR REPLACE FUNCTION XXX.CURRENT_USER( tmp varchar(128))
    SPECIFIC xxx.XXX_CURRENT_USER
RETURNS VARCHAR(128) 
CONTAINS SQL DETERMINISTIC NO EXTERNAL ACTION 
BEGIN
  RETURN session_user ;
END
GO

CREATE TABLE xxx (
    i INTEGER,
    t VARCHAR(128) GENERATED ALWAYS AS (XXX.CURRENT_USER(i))
)

However, would be nice have less "hacky" implementation for a basic thing like this.

For the time stamps there is that "FOR EACH ROW ON UPDATE AS ROW CHANGE TIMESTAMP" statement but no equivalent for other register variables it seems.

Help is very much appreciated

解决方案

Does this work?

CREATE TABLE xxx (
    i INTEGER,
    t VARCHAR(128) WITH DEFAULT session_user
);

I don't have DB2 on hand to check, but this is very similar to the syntax used in other databases (although the more typical syntax does not use WITH).

这篇关于DB2:如何生成总是作为语句使用会话用户的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆