Как запретить повторения первичного ключа? INHERITS

Допустим мне нужно написать триггерную функцию, которая не позволит вставку нового рядка в наследуемую таблицу с тем самым значением первичного ключа, которое уже есть в базовой таблице. То есть допустим есть таблица PC у которой есть первичный ключ PCID, и есть наследуемая таблица с помощью функции INHERITS (допустим PC2), мне нужно что б когда я заполнять таблицу PC2 и вводил PCID, то триггерная функция проверяла нет ли такого же первичного ключа уже в таблице PC.


Ответы (1 шт):

Автор решения: Сергей Мельников

Всё оказалось весьма легко, нужно лишь сравнить в триггерной функции новое значение, которое вводит пользователь и старые, которые есть в базовой функции:

<i> IF NEW.pc_id IN (SELECT pc_id  FROM PC )</i>

<i>THEN</i>

 <i>RAISE NOTICE ‘Айди не может совпадать’;</i>

<i>RETURN NULL;</i>

<i>ELSE</i>

<i>RETURN NEW; </i>
→ Ссылка