繁体   English   中英

如何在 pl/sql 中解决这个问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM