Я ищу способ установить отношение один ко многим между двумя таблицами. Структуры таблиц описаны ниже, но я попытался исключить все, что не имеет отношения к проблеме.
Таблица objects
имеет 1 столбец с именем uuid
.
Таблица contents
имеет 3 столбца, которые называются content
, object_uuid
и timestamp
.
Основная идея - вставить строку в objects
и получить новый uuid
из базы данных. Этот uuid
затем используется для хранения каждой строки в contents
, чтобы связать содержимое с объектами.
Теперь я пытаюсь использовать базу данных для обеспечения этого:
- Каждая строка в
contents
ссылается на строку в objects
(внешний ключ должен делать)
- Ни одна строка в
objects
не существует без хотя бы row
в contents
Эти ограничения должны применяться при фиксации транзакций.
Обычные триггеры не могут помочь, вероятно, потому что, когда записывается строка в таблице objects
, в contents
еще не может быть строки. У Postgres есть так называемый constraint triggers
, который можно отложить до конца транзакции. Можно было бы использовать их, но они кажутся некой внутренней конструкцией, не предназначенной для повседневного использования.
Идеи или решения должны быть стандартными SQL (предпочтительно) или работать с Postgres (версия не имеет значения). Спасибо за любой вклад.