[英]How to solve this issue in pl/sql
如何创建一个触发器,禁止在特定列中插入符号和空格,并且插入后只包含大写字母
例如:
insert into tale xxx values '"&$))(/-$:&@@¥*|^]asjdj';
结果应如下所示:
ASJDJ
谢谢
很多功能程序触发,但没有什么是对的
向表中添加一个新列并更新该列,仅从具有特殊字符的列中提取字母。 使用你的例子。
在 tale 表中添加新的列值。 插入 xxx 列后立即执行如下更新:
update tale set value = upper(regexp_substr(xxx,'[[:alpha:]]+'));
那将是一个行级触发器,它在插入或更新表之前触发,以便在任何情况下修改值。 有多种选项可以让您删除除字母以外的所有内容; 正则表达式很简单。
样品表:
SQL> create table test (col varchar2(40));
Table created.
扳机:
SQL> create or replace trigger trg_biu_test
2 before insert or update on test
3 for each row
4 begin
5 :new.col := upper(regexp_replace(:new.col, '[^[:alpha:]]'));
6 end;
7 /
Trigger created.
测试:
SQL> insert into test (col) values ('"&$))(/-$:&@@¥*|^]asjdj');
1 row created.
SQL> select * from test;
COL
----------------------------------------
YASJDJ
SQL> update test set col = '25xyz';
1 row updated.
SQL> select * from test;
COL
----------------------------------------
XYZ
SQL>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.