Создайте триггер для генерации случайной буквенно-цифровой строки в informix. - PullRequest
1 голос
/ 27 марта 2019

Для создания триггера перед вставкой с использованием базы данных Informix.Когда мы пытаемся вставить запись в таблицу, она должна вставить случайную буквенно-цифровую строку в одно из полей.Есть ли встроенные функции?

Таблица состоит из следующих полей:

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

и я бегу

insert into employee(age) values(10);

Ожидаемый результат должен быть примерно таким, как показано ниже:

 id age empcode
 1, 10, asf123*

Любая помощь приветствуется.

1 Ответ

1 голос
/ 29 марта 2019

Как уже отмечалось, не существует функции для создания случайной строки, однако можно генерировать случайные числа и затем преобразовывать их в символы.Для создания случайных чисел вы можете создать оболочку UDR для функции C, например, random(), или зарегистрировать блок данных 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вашего стола.

...