Ну, один из методов - это триггер.Другой метод заключается в том, чтобы поместить тип в таблицу категорий и включить его в отношения внешнего ключа:
create table category (
category_id serial primary key,
name varchar(20) not null,
type varchar(20) not null,
check type in ('super', 'simple'),
unique (name),
unique (type, name) -- redundant but needed for foreign key reference
);
create table simple_category (
category_id serial primary key,
type varchar(20) default 'simple',
foreign key (type, category_id) references categoria (type, category_id)
);
create table super_category (
category_id serial primary key,
type varchar(20) default 'super',
foreign key (type, category_id) references categoria (type, category_id)
);
Обратите внимание, что я также изменил таблицы, добавив в них первичные ключи с автоинкрементом, чтобы имена не повторялись везде.
Как это работает?Сначала вставьте категорию в categoria
с соответствующим типом.Затем вставьте ссылку в соответствующую таблицу.Вы можете сделать второе с помощью триггера.Однако я предполагаю, что вам нужна другая информация, поэтому они разбиты на разные таблицы.