Member 12016106 Ответов: 1

Как решить запрос на удаление


Здесь у меня есть таблица проектов и настольный модуль Теперь я хочу удалить проект А, но проект а является внешним ключом таблицы модулей. Как удалить проект, который не интегрирован с таблицей модулей? Удалить можно только проект, который не присоединяется ни к одному модулю

Что я уже пробовал:

sb_sql.append("удалить из ");
sb_sql.append(DB_SCHEMA);
sb_sql.append(".PROJECT ");
sb_sql.добавить("где параметр projectid = '" + идентификатор + "' ");

Richard Deeming

sb_sql.append("WHERE PROJECTID = '" + Id + "' ");

Не делай этого так!

Ваш код почти наверняка уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.

Все, что вы хотели знать о SQL-инъекции (но боялись спросить) | Трой Хант[^]
Как я могу объяснить SQL-инъекцию без технического жаргона? | Обмен Стеками Информационной Безопасности[^]
Шпаргалка по параметризации запросов | OWASP[^]

1 Ответов

Рейтинг:
0

Maciej Los

Если я вас хорошо понимаю...

Вам необходимо удалить все модули, связанные с project A, а затем удалите этот проект.

В зависимости от соотношения между таблицами и значением опциона "ON DELETE ...", вы можете использовать JOIN оператор для удаления связанных данных из обеих таблиц.

Видеть:
MySQL :: MySQL 8.0 справочное руководство :: 13.1.20.6 ограничения внешнего ключа[^]
MySQL ON DELETE CASCADE: Автоматическое Удаление данных из связанных таблиц[^]


CPallini

5.

Maciej Los

Спасибо тебе, Карло!