У меня есть таблица 3 таблицы. Таблица версий имеет ссылку на таблицу Project через ProjectID. Затем таблица List ссылается на ProjectID (который является внешним ключом) в таблице версий.
Таблица списка имеет «косвенную» ссылку на таблицу Project.
Project Table
---------------
ProjectID
Versions Table
---------------
VersionID
ProjectID (fk to project table) (UNIQUE constraint added)
List Table
--------------
ListID
VersionID (fk to version table)
ProjectID (fk to fk in version table)
В sequilize у меня определены 3 модели. А в модели List вот как я создаю ассоциацию через:
// Create foreign keys
List.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "VersionID"
});
// Create foreign keys
ConsolidatedList.belongsTo(Versions, {
onDelete: "cascade",
foreignKey: "ProjectID"
});
*
*ПРОБЛЕМА: для модели списка при последовательном включении в поле ProjectID создается ссылка на VersionID (pk) вместо поля ProjectID (fk) в таблице версий!**
Точный запрос, который запускается секвенированием (выделено жирным шрифтом):
Выполнение (по умолчанию): CREATE TABLE IF NOT EXISTS List
(ID
INTEGER auto_increment , ProjectID
INTEGER, VersionID
INTEGER, PRIMARY KEY (ID
), ВНЕШНИЙ КЛЮЧ (ProjectID
) ССЫЛКИ Versions
(VersionID
) ON DELETE CASCADE ON UPDATE CASCADE, ВНЕШНИЙ КЛЮЧ (VersionID
) ССЫЛКИ Versions
(VersionID
) НА КАСКАД УДАЛЕНИЯ НА КАСКАД ОБНОВЛЕНИЯ) ENGINE=InnoDB;