达到同样效果,使用约束和触发器那个效率高

[复制链接]
查看11 | 回复0 | 2011-11-1 16:26:29 | 显示全部楼层 |阅读模式
针对开户银行表bd_accbank的银行账号字段bankacc不能有空格。
我同时做了触发器和约束。
触发器为:
create or replace trigger CSpcace_ACCBANK
before insert or update on bd_accbank
for each row
declare
-- local variables here
begin
if regexp_like(:new.bankacc,'[[:space:]]')

then
raise_application_error(-20001,'银行账号'||:new.bankacc||'或联行号'||:new.combineaccnum||'或单位名称'||:new.unitname||'有空格,请修改!');
end if;
end CSpcace_ACCBANK;
论坛大侠帮助下,同时完成了同样效果的约束:
alter table BD_ACCBANK
add constraint NO_SPACEING_CK
check (regexp_instr(bankacc,'\s')=0);
测试效果同样ok。
在我同时开启两者的情况下,(首先)其效果的是触发器,约束没有看到对话框提示。
请问,为什么是触发器先其效果?那个效率更高些呢?
另外就是约束不能有中文的汉字写在里面(比如名字),可是触发器可以raise ,里面可以任意给出中文提示,这个情况大家都是怎么处理?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行