mysql - 我想为限制数值插入编写触发器
问题描述
我想编写触发器来限制用户在列的名称字段中插入数值和特殊字符。
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;
/
解决方案
正如@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]+','');
推荐阅读
- angular - Angular 2 Typescript 在登录/注销时重新加载组件
- javascript - 在 DOM 中堆叠多个画布或在一个画布中控制所有绘图更好吗?
- r - 当对不同的主成分组合进行回归时,回归系数不会改变
- graphql - Gatsby 源 API 服务器转换属性名称并不允许 GraphQL 查询
- xamarin.forms - Xamarin 表单 (ios):以编程方式连接到 wifi 时出现运行时异常
- r - R - 计算 flexsurvreg 或 aftreg 对象的残差
- ios - NavigationBar中的iOS 10后退按钮宽度
- python - 美丽的汤没有加载整个页面
- scala - apache spark中的类型不匹配RDD递归方法调用
- java - “不是声明”错误是什么意思?