Я установил схему разделения на основе триггера для одной из наших баз данных pg 8.3 в соответствии с pg docs здесь: . По сути, у меня есть родительская таблица, а также несколько дочерних таблиц. Триггер вставки родительского элемента перенаправляет любые вставки родительского элемента в соответствующую дочернюю таблицу - это работает хорошо.
Адаптер ActiveRecord pg, однако, полагается на расширение id для postgres INSERT ... RETURNING, чтобы получить идентификатор возвращаемой строки после начальной вставки. Но триггер, кажется, нарушает предложение RETURNING - идентификатор не возвращается, хотя строка создана правильно.
Хотя я полагаю, что такое поведение имеет смысл - в конце концов, ничего не вставляется в основную таблицу, мне действительно нужно найти какой-то обходной путь, так как будут вставлены другие дочерние записи, которые требуют идентификатор строки только что вставленный ряд.
Полагаю, я мог бы добавить какой-то уникальный идентификатор в строку перед вставкой, а затем перечитать его, используя этот ключ после вставки, но это выглядит довольно глупо. У кого-нибудь есть лучшее решение?