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

时间:2019-03-27 13:32:59

标签: informix

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

该表包含以下字段:

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

我正在跑步

insert into employee(age) values(10);

预期输出应如下所示:

 id age empcode
 1, 10, asf123*

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

如上所述,尚无创建随机字符串的功能,但是可以生成随机数,然后将其转换为字符。要创建随机数,您可以为C函数(例如random())创建UDR包装器,也可以注册excompat datablade并使用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列。