插入随机字符串后创建触发器

时间:2017-02-15 12:39:35

标签: sql oracle

我有一个表app和一列ID, PWID auto increment。我想创建触发器,当我插入新行(ID),然后插入PW列随机字符串,例如75Da5A(长度为7),请帮忙

ID   PW
1    75Da5A
2    45daa8
3    571as5
----------
---------

1 个答案:

答案 0 :(得分:0)

您可能需要以下内容:

SQL> CREATE TABLE app ( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
  2                     pwd varchar2(16));

Table created.

SQL> create or replace trigger randomPwd
  2  before insert on app
  3  for each row
  4  begin
  5      if :new.pwd is null then
  6          :new.pwd := dbms_random.string('a', 7);
  7      end if;
  8  end;
  9  /

Trigger created.

SQL> insert into app values ('', '');

1 row created.

SQL> select * from app;

        ID PWD
---------- ----------------
         1 RVaQalX

您可以使用dbms_random.string以不同方式获取随机字符串,而无需编辑结果。

来自Oracle documentation

  
      
  • 'u','U' - 以大写字母字符
  • 返回字符串   
  • 'l','L' - 以小写字母字符
  • 返回字符串   
  • 'a','A' - 以大小写混合字母字符返回字符串
  •   
  • 'x','X' - 以大写字母数字字符返回字符串
  •   
  • 'p','P' - 以任何可打印的字符返回字符串。
  •