CREATE TABLE titlexplan(
id INTEGER NOT NULL,
title_id INTEGER NOT NULL ,
plan_id INTEGER NOT NULL ,
start_date DATETIME NOT NULL,
end_date DATETIME
CHECK (start_date < end_date),
PRIMARY KEY(id),
FOREIGN KEY (title_id)
REFERENCES title(id)
ON UPDATE CASCADE,
FOREIGN KEY (plan_id)
REFERENCES plan(id)
ON UPDATE CASCADE
);
Я считаю, что это должно работать. «ON UPDATE CASCADE» приведет к тому, что эти внешние ключи будут обновляться каждый раз, когда ключ, на который они ссылаются, обновляется.
Также убедитесь, что вы используете механизм innoDB для правильной работы внешних ключей.
Если вы не хотите, чтобы столбец id и комбинация title_id и plan_id всегда были уникальными, вы можете сделать
CREATE TABLE titlexplan(
title_id INTEGER NOT NULL ,
plan_id INTEGER NOT NULL ,
start_date DATETIME NOT NULL,
end_date DATETIME
CHECK (start_date < end_date),
PRIMARY KEY(title_id, plan_id),
FOREIGN KEY (title_id)
REFERENCES title(id)
ON UPDATE CASCADE,
FOREIGN KEY (plan_id)
REFERENCES plan(id)
ON UPDATE CASCADE
);