sql oracle截断用户

sql oracle截断用户,sql,oracle,Sql,Oracle,我需要截断Oracle中的USER函数,并且仍然使用别名USER。这是因为在更新该用户之前,我无权访问行触发器(oracle用户名和我的oracle用户名超过了字符限制) 这不管用。关键是用户必须是别名。如果我不使用它,效果很好,但我“需要”让用户继续使用,这样触发器才能工作 这是触发器(我不能更改它,因为我没有权限) 问题是我的Oracle用户太长。我需要缩短它(在更新之前)-但不是永久性的。我认为您正在寻找的函数是SUBSTR,它将字符串值减少到特定的字符数(): 例如: SELECT SY

我需要截断Oracle中的USER函数,并且仍然使用别名USER。这是因为在更新该用户之前,我无权访问行触发器(oracle用户名和我的oracle用户名超过了字符限制)

这不管用。关键是用户必须是别名。如果我不使用它,效果很好,但我“需要”让用户继续使用,这样触发器才能工作

这是触发器(我不能更改它,因为我没有权限)


问题是我的Oracle用户太长。我需要缩短它(在更新之前)-但不是永久性的。

我认为您正在寻找的函数是SUBSTR,它将字符串值减少到特定的字符数():

例如:

SELECT SYSDATE, SUBSTR(USER, 1, x) as "USER" FROM DUAL;
将“x”替换为userofchange列的长度


另外,我建议增加userofchange列的长度。如果它是用来存储用户名的,但它太短,那么它就不能正常工作。

我真的不清楚。请张贴一个你开始的情况的例子,说明你需要得到什么。例如,你写了一个触发器,哪个触发器?“截断用户”是什么意思?对不起,你的问题完全不清楚。请仔细描述你需要一步一步地获得什么。显示更改前代码/数据的外观以及期望的结果。
作为“用户”
可能?您只有三个选项(afaik):1。获取所需的priv或让其他人更新触发器以使用
substr(user,)
,2。使userofchange列大小增加,或3。创建一个名称足够短的用户,并改用它。tableA.userofchange列应增加到imo(至少为varchar2(30))。
create or replace trigger tr_upd
before update on tableA
  for each row
begin
  :new.dateofchange := sysdate;
  :new.userofchange:= user;
SELECT SYSDATE, SUBSTR(USER, 1, x) as "USER" FROM DUAL;