Как я могу получить количество символов varchar - PullRequest
0 голосов
/ 09 июня 2018

Я пытаюсь сделать триггер, который ограничивает количество символов при вставке или обновлении

CREATE OR REPLACE TRIGGER trigpersonfone
 BEFORE INSERT OR UPDATE OF phone ON PhonePerson
 FOR EACH ROW
   BEGIN
      IF :NEW.phone.LENGTH < 8 THEN 
         DBMS_OUTPUT.put_line('The phone cannot have less then 8 numbers');
      END IF;
  END;
/

Я использую оракул в прямом эфире, и этот иде не показывает хороший журнал ошибок,Может кто-нибудь сказать мне, что не так в моем коде sql?Спасибо

Ответы [ 2 ]

0 голосов
/ 09 июня 2018
:NEW.phone.LENGTH

не работает.Это не объект, имеющий LENGTH член.Используйте функцию LENGTH().

LENGTH(:NEW.phone)

Также DBMS_OUTPUT.PUTLINE() не прерывает DML.Телефонные номера с длиной менее 8 символов все еще могут быть успешно введены.Может быть, вы хотите использовать RAISE вместо.

0 голосов
/ 09 июня 2018

Используйте ограничение check, а не триггер:

alter table PhonePerson add constraint chk_phoneperson_phone check (length(phone) >= 8);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...