创建触发器以在informix中生成随机字母数字字符串

问题描述 投票:1回答:1

在使用Informix数据库插入之前创建触发器。当我们尝试在表中插入记录时,它应该将随机的字母数字字符串插入到字段之一中。有内置功能吗?

该表包含以下字段:

  • empid serial NOT NULL
  • age int
  • empcode varchar(10)

而我正在跑步

insert into employee(age) values(10);

预期输出应如下所示:

 id age empcode
 1, 10, asf123*

任何帮助表示赞赏。

informix
1个回答
1
投票

正如已经注释的那样,没有现有的函数来创建随机字符串,但是可以生成随机数,然后将它们转换为字符。要创建随机数,您可以为C函数(如random())创建UDR包装,或者注册excompat数据库并使用dbms_random_random()函数。以下是用户定义函数的示例,该函数使用dbs_random_random()函数生成ASCII字母数字字符串:

create function random_string()
returning varchar(10)
define s varchar(10);
define i, n int;
let s = "";

for i = 1 to 10
  let n = mod(abs(dbms_random_random()), 62);
  if (n < 10)
  then
    let n = n + 48;
  elif (n < 36)
  then
    let n = n + 55;
  else
    let n = n + 61;
  end if
  let s = s || chr(n);
end for

return s;
end function;

然后可以从插入触发器调用此函数以填充表的empcode列。

© www.soinside.com 2019 - 2024. All rights reserved.