Как проверить, что переменная varchar2 в PL / SQL похожа на 10 символов в триггере? - PullRequest
1 голос
/ 24 мая 2011

Как проверить, что переменная varchar2 в PL / SQL равна 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;

1 Ответ

3 голосов
/ 24 мая 2011

Я бы использовал проверочное ограничение, а не триггер:

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;

Если вызвано исключение, вставка или обновление отменяются;в противном случае это имеет место.

...