Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Не получили
письмо с кодом активации
?
1 час
1 день
1 неделя
1 месяц
Навсегда
Новости:
Начало
Помощь
Поиск
Календарь
Вход
Регистрация
Forum Webscript.Ru
»
Общие
»
Базы данных
»
Несколько удалений...
« предыдущая тема
следующая тема »
Печать
Страницы: [
1
]
Вниз
Автор
Тема: Несколько удалений... (Прочитано 4903 раз)
0 Пользователей и 1 Гость просматривают эту тему.
Maresh
Заглянувший
Новичок
Сообщений: 9
+0/-0
0
Несколько удалений...
«
:
10 Мая 2004, 13:20:32 »
Привет, всем!
У меня такая проблема:
Есть БД в ней 5 таблиц, причем во второй таблице есть внешний ключ ссылающийся на первую, в третьей на вторую и.т.д)- вобщем иерархия.
мне нужно выполнить 5 deletов, т.е я знаю id(первичный ключ) в первой таблице.
Теперь вопрос: мне хотелось бы быть уверенным, что удалятся либо все необходимые записи, либо не удалится ничего.(транзакция)
Как бы это поэффективнее сделать?
Записан
Chs
Perl программер
Глобальный модератор
Ветеран
Сообщений: 1108
+0/-0
2
Несколько удалений...
«
Ответ #1 :
10 Мая 2004, 22:25:38 »
Ну а БД какая?
Записан
2B OR NOT 2B = FF
Maresh
Заглянувший
Новичок
Сообщений: 9
+0/-0
0
Несколько удалений...
«
Ответ #2 :
10 Мая 2004, 23:18:28 »
MySQL не пятая
Записан
Alexandr
Фанат форума
Ветеран
Сообщений: 865
+0/-0
0
Несколько удалений...
«
Ответ #3 :
11 Мая 2004, 08:04:32 »
Если 4, то
DELETE t1, t2, t3, t4, t5
FROM t1, t2, t3, t4, t5
WHERE t1.id=t2.id AND t2.id=t3.id AND t3.id=t4.id AND t4.id=t5.id AND t5.id=12
Записан
Kiss my CSS
Pусские gtp gp3 ( midi + tab ) - - Все для Авто.
Maresh
Заглянувший
Новичок
Сообщений: 9
+0/-0
0
Несколько удалений...
«
Ответ #4 :
12 Мая 2004, 09:22:44 »
Спасибо большое!
Попробую
Записан
Maresh
Заглянувший
Новичок
Сообщений: 9
+0/-0
0
Несколько удалений...
«
Ответ #5 :
13 Мая 2004, 22:57:15 »
У меня такая вот проблема: если например в 3ей по иерархии таблице нет строк удовлетворяющих условию, то не удаляется вообще ничего(то есть и записи из других таблиц не удаляются).
Можно ли с этим бороться?
Записан
Chs
Perl программер
Глобальный модератор
Ветеран
Сообщений: 1108
+0/-0
2
Несколько удалений...
«
Ответ #6 :
14 Мая 2004, 09:11:59 »
Можно.
Читать про LEFT JOIN.
Выбирать id select\'ом по LEFT JOIN, а удалять отдельными запросами по конкретным id.
Записан
2B OR NOT 2B = FF
Maresh
Заглянувший
Новичок
Сообщений: 9
+0/-0
0
Несколько удалений...
«
Ответ #7 :
14 Мая 2004, 10:17:09 »
Но это уже несколько DELETE запросов будет, так?
Записан
Chs
Perl программер
Глобальный модератор
Ветеран
Сообщений: 1108
+0/-0
2
Несколько удалений...
«
Ответ #8 :
14 Мая 2004, 13:49:49 »
Да, запросов DELETE будет несколько - по одному на каждую таблицу, но если есть индекс по id работать они будут быстро.
Записан
2B OR NOT 2B = FF
commander
Developer
Глобальный модератор
Ветеран
Сообщений: 1298
+0/-0
2
Несколько удалений...
«
Ответ #9 :
14 Мая 2004, 16:39:37 »
Maresh
CREATE FUNCTION
если не хочешь нагружать приложение...
Записан
And no religion too...
Макс
vir magni ingenii
Глобальный модератор
Ветеран
Сообщений: 3534
+0/-0
2
Несколько удалений...
«
Ответ #10 :
14 Мая 2004, 18:12:51 »
так вроде бы mysql 4 уже поддерживает
ON DELETE CASCADE
«
Последнее редактирование: 14 Мая 2004, 18:20:11 от Макс
»
Записан
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )
Макс
vir magni ingenii
Глобальный модератор
Ветеран
Сообщений: 3534
+0/-0
2
Несколько удалений...
«
Ответ #11 :
14 Мая 2004, 18:18:01 »
http://dev.mysql.com/doc/mysql/ru/CREATE_TABLE.html
да, действительно есть, но только innodb
Записан
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )
Печать
Страницы: [
1
]
Вверх
« предыдущая тема
следующая тема »
Forum Webscript.Ru
»
Общие
»
Базы данных
»
Несколько удалений...
Sitemap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28