У меня есть таблица, которая имеет отношение внешнего ключа к себе (по составному первичному ключу)
например. что-то вроде следующего:
CREATE TABLE graph (
start_id character varying(50) NOT NULL,
end_id character varying(50) NOT NULL,
weight integer,
other_start_id character varying(50),
other_end_id character varying(50),
CONSTRAINT graph_pkey PRIMARY KEY (start_id, end_id),
CONSTRAINT graph_other FOREIGN KEY (other_start_id, other_end_id)
REFERENCES graph (start_id, end_id) MATCH SIMPLE
ON UPDATE SET NULL ON DELETE SET NULL,
)
В SqlAlchemy я создаю новый (ожидающий) объект графа 'new_obj' и назначаю его другому атрибуту существующего постоянного объекта, т.е.
exist_obj.other = new_obj
Когда я фиксирую сеанс, SqlAlchemy выдает UPDATE для существующего объекта, прежде чем выдает INSERT для создания new_obj. Моя база данных справедливо жалуется на ОБНОВЛЕНИЕ, что она не может найти внешний ключ graph_other
(поскольку new_obj еще не был вставлен).
Я думал, что SqlAlchemy должен был быть умным в отношении порядка SQL?
Я использую версию 0.5.4
Есть ли способ вручную упорядочить операции?