Я пытаюсь создать маршрут POST, как показано ниже. В моей таблице расписаний установлено ограничение FOREIGN KEY, ссылающееся на таблицу Employee. Когда я пытаюсь вставить расписание от сотрудника, который не существует, используя DB Browser, я получаю правильную ошибку, вызванную ограничением. Однако, когда я запускаю приведенный ниже код, он игнорирует это ограничение и вставляет запись. Я настроил это неправильно или это недопустимое ограничение в этом сценарии?
timesheetRouter.post("/", getParams, (req, res, next) => {
const tsData = req.body.timesheet;
console.log("ID", req.empID);
db.run(`insert into Timesheet (hours, rate, date, employee_id)
values ($hours, $rate, $date, $emp);`, {
$hours: tsData.hours,
$rate: tsData.rate,
$date: tsData.date,
$emp: req.empID
}, function(err) {
if (err) {
return res.status(404).send(err);
} else {
db.get("select * from Timesheet where id = $id", {$id: this.lastID},
(err, row) => {
return res.status(201).send({timesheet: row});
});
}
});
});
Код создания таблицы:
db.serialize(() => {
db.run("DROP TABLE IF EXISTS Timesheet", err => {
if (err) {
throw new Error(err);
}
});
db.run(`create table Timesheet (id integer PRIMARY KEY,
hours integer NOT NULL,
rate integer NOT NULL,
date integer NOT NULL,
employee_id integer NOT NULL, FOREIGN KEY (employee_id) REFERENCES Employee (id))`,
err => {
if (err) {
throw new Error(err);
}
});
});
Примечание. GetParams - это функция для определения значения empID.