我想编写触发器以限制用户在列的“名称”字段中插入数字值和特殊字符。
CREATE TRIGGER trig_check BEFORE
INSERT ON tempuser
FOR EACH ROW
BEGIN
IF :new.firstname NOT LIKE '%[0-9]%'
THEN
dbms_output.put_line('INSERT ONLY ALPHABETS');
END IF;
END;
/
答案 0 :(得分:1)
正如@a_horse_with_no_name所指出的,最好添加如下所示的检查约束:
alter table TAB
add constraint CHK_NAME_WITHOUT_NUMBER
check (not regexp_like(name,'[0-9]+'));
当然是在清除包含数字的数据之后。为了实现此目标,可以在上面的DML
之前使用以下DDL
语句:
update tab
set name = regexp_replace(name,'[0-9]+','');