1

如何检查 PL/SQL 中的 varchar2 变量是否像触发器中的 10 个字符?它会自动继续插入它吗?

--trigger that checks that number of characters are 10, doesnt work
create or replace trigger checkthings
before insert or update
on tblTenChars
declare
noGood exception;
begin
if :new.justTenVars(size) <> 10 then --this is not the way? 
raise noGood;
end if;
exception
when noGood then
raise_application_error(-20008, 'Wrong not 10 characters');
end;
4

1 回答 1

3

我会使用检查约束,而不是触发器:

alter table tblTenChars add constraint checkthings
  check (length(justTenVars) = 10);

检查约束更简单、更有效。

但为了完整起见,触发代码将是:

create or replace trigger checkthings
before insert or update
on tblTenChars
for each row
begin
  if length(:new.justTenVars) <> 10 then 
    raise_application_error(-20008, 'Wrong not 10 characters');
  end if;
end;

如果引发异常,则插入或更新被中止;否则会发生。

于 2011-05-24T11:57:24.227 回答