LINUX.ORG.RU

Как запретить в триггере вставку пустого jsonb

 ,


0

1

СУБД Postgresql, нужно в триггере запретить вставку в поле пустого ‘{}’::jsonb

Пробовал что-то подобное, но не работает

BEGIN

IF NEW.«Param» = ‘{}’::jsonb THEN

  DELETE FROM "Table1" WHERE "Key" = NEW."Key";

  RETURN NULL;

END IF;

RETURN NEW;

END;



Последнее исправление: polin11 (всего исправлений: 2)

NEW.«Param»

«Table1»

«Key»

NEW.«Key»

"

Где вы этой херни набрались? Вангую, именно поэтому и не работает. На всякий случай, вот ещё возможные причины:

  • statement-level триггер, игнорирующий return value
  • row-level after insert or update триггер, делающий то же самое

И кто вообще тебя научил возвращать null при нарушении ограничений? Для справки тебе: => insert into table1 values (...); => INSERT 0. Выкидывай ошибку при нарушениях(смотреть raise в plpgsql).

anonymous
()

Да, самое главное - это реализуется в обычном check(), триггеры здесь не нужны.

anonymous
()
ALTER TABLE $TABLE_NAME ADD CONSTRAINT $CONSTRAINT_NAME CHECK ($FIELD <> '{}'::jsonb);
Siborgium ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.