Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/9: Рейтинг темы: голосов - 9, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 14.08.2013
Сообщений: 29

Как удалить записи в таблице?

19.10.2013, 00:05. Показов 1907. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!Не могу удалить записи в таблице
Выдает ошибку
MySQL error: Cannot delete or update a parent row: a foreign key constraint fails (`station`.`routestation`, CONSTRAINT `routestation_ibfk_2` FOREIGN KEY (`id_station`) REFERENCES `station` (`id_station`) ON UPDATE CASCADE)
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$user = "root";
$pass = "mysql108";
$db = "station";
 
mysql_connect("localhost",$user,$pass) or die("Could not connect: ".mysql_error());
 
@mysql_query("CREATE DATABASE $db");
 
mysql_select_db($db) or die("Could not select database: ".mysql_error());
 
mysql_query('CREATE TABLE station(id_station INT AUTO_INCREMENT NOT NULL,name VARCHAR(20) NOT NULL,PRIMARY KEY(id_station))') or die ("MySQL error: ".mysql_error());
 
mysql_query('CREATE TABLE train(id_train INT AUTO_INCREMENT NOT NULL,model VARCHAR(20) NOT NULL,PRIMARY KEY(id_train))') or die("MySQL error: ".mysql_error());
 
mysql_query('CREATE TABLE route(id_route INT AUTO_INCREMENT NOT NULL,departure VARCHAR(20) NOT NULL,destination VARCHAR(20) NOT NULL,PRIMARY KEY(id_route))') or die("MySQL error: ".mysql_error());
 
mysql_query('CREATE TABLE ticket(id_ticket INT AUTO_INCREMENT NOT NULL,fio VARCHAR(50) NOT NULL,passport INT NOT NULL,id_route INT NOT NULL,id_train INT NOT NULL,PRIMARY KEY(id_ticket),FOREIGN KEY(id_route) REFERENCES route(id_route) ON UPDATE CASCADE ON DELETE RESTRICT,FOREIGN KEY(id_train) REFERENCES train(id_train) ON UPDATE CASCADE ON DELETE RESTRICT)') or die("MySQL error: ".mysql_error());
 
mysql_query('CREATE TABLE routestation(id_route INT NOT NULL,id_station INT NOT NULL,position VARCHAR(20) NOT NULL,cost INT NOT NULL,FOREIGN KEY(id_route) REFERENCES route(id_route) ON UPDATE CASCADE ON DELETE RESTRICT,FOREIGN KEY(id_station) REFERENCES station(id_station) ON UPDATE CASCADE ON DELETE RESTRICT)') or die("MySQL error: ".mysql_error());
 
?>
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$user = "root";
$pass = "";
$db = "station";
mysql_connect("localhost",$user,$pass) or die("Could not connect: ".mysql_error());
mysql_select_db($db) or die("Could not select database: ".mysql_error());
$urlArray = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH); 
$segments = explode('/', $urlArray); 
$numSegments = count($segments); 
$currentSegment = $segments[$numSegments - 1];
 
mysql_query("DELETE station,train,route,routestation,ticket FROM station,train,route,routestation,ticket WHERE station.id_station=routestation.id_station AND route.id_route=routestation.id_route AND route.id_route=ticket.id_route AND train.id_train=ticket.id_train AND station.id_station='".$currentSegment."'") or die ("MySQL error: ".mysql_error());
 
?>
Миниатюры
Как удалить записи в таблице?  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.10.2013, 00:05
Ответы с готовыми решениями:

Как удалить записи в таблице?
Я пишу прогу на VB, в одной из процедур мне необходимо удалить все записи в таблице Dim cn As New ADODB.Connection Dim rs As New...

Удалить все записи в таблице?
есть запрос delete, что бы удалите все поля из таблицы, без исключений? Либо как это организовать? Добавлено через 12 минут ...

Удалить повторяющиеся записи в таблице с 1 колонкой
Доброй ночи, каким SQL кодом можно удалить повторы. То есть в БД есть таблица Hash, в ней 1 колонка value Было: name123 name123 ...

2
Заблокирован
19.10.2013, 04:19
В таких условиях вы можете удалять\обновлять начиная с самой "младшей" referenced_table_name - именно так называется поле ограничителей в information_shema. Попытка удалить что-то из table_name выдаст процитированную ошибку если table_name в свою очередь referenced_table_name, или если нет, но каскадное удаление не разрешено. Если разрешено, то удалены будут все записи "родителя" вместе с ним самим.

В структуру не вникал, объяснил по мануалу на fk. Найдите в списке того самого родителя и удаляйте только его. Условия можно оставить без изменений. Если требуется удалять что-то из потомков, придется начинать с них.

Добавлено через 22 минуты
Попробовал вникнуть.

PHP
1
station.id_station='".$currentSegment."'"
Хотите удалить целую станцию со всем ее барахлом. Между тем на нее ссылается routestation (видимо пересадочный пункт):

SQL
1
REFERENCES station(id_station) ON UPDATE CASCADE ON DELETE RESTRICT
Правила которого запрещают удаление через отношение. Значит вы должны сперва удалить пересадку (там еще надо смотреть на кого она сама показывает), а потом только станцию в которую эта пересадка входит.

Или поменяйте логику удаления через отношения (через FK).

Добавлено через 10 минут
Не по теме. Я пытался пристроить innoDB FK - мне совершенно там ничего не понравилось. Оно хорошо умеет только материться, но само толком ничего сделать не может. Интеллекта - нуль. Эффективнее сделать свою надстройку через такую же таблицу отношений как в information_schema, но поуже.

Полагаю что вам пригодится в перспективе терок с FK - multi_query();

Но придется (кажется) перейти на mysqli
1
0 / 0 / 0
Регистрация: 14.08.2013
Сообщений: 29
19.10.2013, 13:54  [ТС]
Цитата Сообщение от sqlnub Посмотреть сообщение
Правила которого запрещают удаление через отношение. Значит вы должны сперва удалить пересадку (там еще надо смотреть на кого она сама показывает), а потом только станцию в которую эта пересадка входит.
Значить отдельные запросы.Спасибо!!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.10.2013, 13:54
Помогаю со студенческими работами здесь

Удалить записи из таблицы product_to_category, если product_id не найден в таблице product
Запрос для cms opencart Есть таблица product (хранит в себе product_id), таблица categoty (хранит в себе category_id) есть таблица...

При удалении записи в дочерней таблице она пытается удалить запись в родительской.
MSSQL 7.0. Две таблицы - родительская и дочерняя. Естественно стоят ограничения PK и FK(внешний ключ). Если в дочерней таблице удаляю...

Как перемешать записи в таблице?
Всем привет! Такой вопрос. имеется таблица Код Вариант 1 Петров 2 Иванов 3 Сидоров 4 Петухов Можно ли как то перемешать эти...

Как обновить записи в таблице
Всем привет. Нуждаюсь в помощи по созданию кнопки, которая будет обновлять данные в таблице. Данные отображаются в DataGridView1 ...

Как проверить есть ли в таблице записи
Мне надо проверить есть ли в таблице записи, и как то у меня это не получается? Подскажите как это сделать. Спасибо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru