针对开户银行表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 ,里面可以任意给出中文提示,这个情况大家都是怎么处理?