-4
我有一個表app
和列ID, PW
和ID auto increment
。我想創建觸發器,當我插入新行(ID
),然後插入PW
列隨機字符串,例如75Da5A(長度爲7),請幫助創建觸發器後插入隨機字符串
ID PW
1 75Da5A
2 45daa8
3 571as5
----------
---------
我有一個表app
和列ID, PW
和ID auto increment
。我想創建觸發器,當我插入新行(ID
),然後插入PW
列隨機字符串,例如75Da5A(長度爲7),請幫助創建觸發器後插入隨機字符串
ID PW
1 75Da5A
2 45daa8
3 571as5
----------
---------
您可能需要類似以下內容:
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
以不同方式獲取隨機字符串,而無需編輯結果。
- 'U', 'U' - 以大寫字母字符
- 'L' 返回字符串, 'L' - 在返回字符串小寫字母字符
- ' a','A' - 以混合大小寫形式返回字符串
- 'x','X' - 以大寫字母數字字符返回字符串
- 'p','P' - 返回str以任何可打印的字符。
你有多遠?你堅持觸發語法,或生成一個隨機字符串,或兩者? (你真的以純文本存儲密碼嗎?) –
是的,我現在................. –
Alex Poole觸發語法我有一個查詢誰生成隨機代碼,但我需要觸發器 ** select UPPER(SUBSTR(TRANSLATE(dbms_random.string('p',100),'A'〜!@#$%^&*() - = _ + [] \ {} |;'': 「,。/ <>?','A'),1,7))FROM dual ** –