Мне нужен триггер, это моя база данных, которая заменяет первый ноль телефонного номера на соответствующий код страны (в моем случае это +31).Пока мой код:
create or replace function correct_number()
returns trigger as $$
declare
Pnumber integer;
begin
select substring(phone, 1, 1) from "user" where phone = new.phone into Pnumber;
if Pnumber = 0 then
update "user"
set phone = overlay("user".phone placing '+31' from 1 for 1)
where id = new.id;
return null;
end if;
end
$$ language plpgsql;
create trigger force_countrynr
before insert on "user"
for each statement execute procedure correct_number();
Проблема в том, что каждый раз, когда я пытаюсь добавить данные, моя СУБД выдает ошибку, что конец процедуры достигается без возврата.Очевидно, это означает, что он не считает оператор if истинным, но я не могу понять, почему.
Это DDL атрибута, который касается моей функции, это varchar (13) имой тестовый запрос выглядит следующим образом:
insert into gebruiker
values('U5', 'Hans', '12345', 'Hans', null, 'Kraay', 'Hansworst', '0000QW', 'beukenweg', '4', null, '0612345678', 'test@notnow.nl', '2015-12-12');
Я пытался изменить нулевой тип данных в моем операторе if, изменить тип данных числовой переменной и многое другое, но я не могузаставить его работать.