我想编写触发器以限制数值插入

时间:2019-01-25 08:04:58

标签: mysql constraints database-trigger check-constraints

我想编写触发器以限制用户在列的“名称”字段中插入数字值和特殊字符。

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;
/

1 个答案:

答案 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]+','');