Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.07.2022, 06:31
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Как запретить удаление SQLITE
Добрый день! Есть две таблицы, Category и Good.
CREATE TABLE Good (
    id          INTEGER       PRIMARY KEY AUTOINCREMENT,
    title       VARCHAR (100),
    id_unit     INTEGER       REFERENCES Unit (id) DEFERRABLE INITIALLY DEFERRED
                              NOT NULL,
    id_category INTEGER       REFERENCES Category (id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED
                              NOT NULL
);


CREATE TABLE Category (
    id    INTEGER       PRIMARY KEY,
    title VARCHAR (100),
    image VARCHAR (200) 
);

В общем, мне надо запретить удаление категории, если в таблице товаров есть товары с данной категорией. Как это сделать можно? Сейчас удаляется.... Или проверять каждый раз это условие в коде удаления?
//Удаление
    router.post("/delete/:id", (req, res) => {
        const id = req.params.id;
        const sql = "DELETE from Category where (id =?)" ;
        db.run(sql,id,err => {
            if (err) {
               return console.error(err.message);
              }
              res.redirect("/category");
               });
         });
Ответить с цитированием
  #2 (permalink)  
Старый 05.07.2022, 08:45
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Jimy
надо запретить удаление категории, если в таблице товаров есть товары с данной категорией. Как это сделать можно?
Перед удалением проверить есть ли в таблице товаров товары с такой категорией... Если нет - удалять.
В противном случае отвечать что удаление невозможно.
Ответить с цитированием
  #3 (permalink)  
Старый 05.07.2022, 10:23
Аспирант
Отправить личное сообщение для Jimy Посмотреть профиль Найти все сообщения от Jimy
 
Регистрация: 21.03.2019
Сообщений: 64

Ну я так и думал... А средствами самой СУБД нельзя?
Ответить с цитированием
  #4 (permalink)  
Старый 05.07.2022, 10:26
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Сообщение от Jimy
А средствами самой СУБД нельзя?
Я с SQLITE не работал...
А в других SQL-подобных СУБД не встречал неких "ограничений" для удаления по наличию чего-то, где-то...
Ответить с цитированием
  #5 (permalink)  
Старый 05.07.2022, 11:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,217

Jimy, как вариант усилить условие на удаление...
Что-то типа такого
DELETE from Category where (id =?) and not EXISTS (SELECT * FROM Good  where id_category=?)

Но так будет не понятно удалилась запись или нет...
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запретить вход на сайт если.... dezytube Элементы интерфейса 1 26.08.2016 15:12
Как запретить прокрутку страницы при грозонтальной прокрутке внутреннего div? shurik_shink Events/DOM/Window 1 26.04.2016 15:50
как запретить Java на телефоне? Александр1986 Общие вопросы Javascript 6 09.08.2014 03:54
Как можно в DIV_е с включенным contentEditable запретить использовать <SCRIPT> и <A>? Маэстро Events/DOM/Window 11 02.07.2011 20:00
Как запретить уход из фрейма в top-окно? sturm Общие вопросы Javascript 6 20.04.2008 04:20