У меня есть две таблицы - одна - Product, а другая - ProductSearchResult.
Всякий раз, когда кто-то пытается вставить SearchResult с продуктом, которого нет в таблице Product, ограничение внешнего ключа нарушается, поэтому я получаю ошибку.
Я хотел бы знать, как я могу заставить мою базу данных автоматически создавать этот отсутствующий Продукт в Таблице продуктов (Только ProductID, все остальные атрибуты можно оставить пустыми)
Есть ли такая вещь, как CASCADE ON INSERT? Если есть, я не смог заставить его работать.
Правила выполняются после вставки, поэтому, поскольку мы заранее получаем ошибку, бесполезно, если вы используете «DO ALSO». Если вы используете «DO INSTEAD» и добавляете команду «INSERT» в конце, вы получаете бесконечную рекурсию.
Я считаю, что Триггер - это путь, но все мои попытки написать один провалились.
Есть рекомендации?
Структура таблицы:
CREATE TABLE Product (
ID char(10) PRIMARY KEY,
Title varchar(150),
Manufacturer varchar(80),
Category smallint,
FOREIGN KEY(Category) REFERENCES Category(ID) ON DELETE CASCADE);
CREATE TABLE ProductSearchResult (
SearchTermID smallint NOT NULL,
ProductID char(10) NOT NULL,
DateFirstListed date NOT NULL DEFAULT current_date,
DateLastListed date NOT NULL DEFAULT current_date,
PRIMARY KEY (SearchTermID,ProductID),
FOREIGN KEY (SearchTermID) REFERENCES SearchTerm(ID) ON DELETE CASCADE,
FOREIGN KEY (ProductID) REFERENCES Product ON DELETE CASCADE);