powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / CascadeDelete&TimeExecution
3 сообщений из 3, страница 1 из 1
CascadeDelete&TimeExecution
    #32444922
MySQLdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброго времени суток!

1)Вот делаю клиента для MySQL базы, тип MyISAM.
До этого момента реализовал все операции по поиску,
воборкам и редактированию, старательно избегая удалений,
которые реализовывал только в одиночных таблицах,
не имеющих внешних ключей...
Но вот час пробил, и стала проблема с каскадным удалением
из N связных таблиц в одном направлении.
Если взять наиболее простой вариант, из двух таблиц,
то алгоритм предельно ясен:
а) В родительской таблице удаляем выбранную запись,
предварительно сохраняя данные , которые содержались
в поле первичного ключа данной записи,
положим SaveKeyValue,(это может быть и не одна переменная,
если ключ составной...)
б) делаем удаление в подчиненной таблице,
связанной с родительской по ForenKey:
Delete * From "дочерняя таблица"
Where ForenKeyvalue "в дочерней таблице" =
SaveKeyValue "ранее удаленной записи родительской таблицы";

А как быть, если удаление одной записи в родительской таблице,
должно повлечь каскадное удаление
скажем в 4 последовательно связанных таблицах ???
А в общем случае N таких таблицах????

К примеру рассмотрим такой вариант,
который у меня точно реализуется:

Таблица T1:
varchar(200) а,
Primary Key (a)

Таблица T2:
varchar(200) b,
Primary Key (b)
Foreign Key (a) Referenses (T1)

Таблица T3:
varchar(200) c,
Primary Key (c)
Foreign Key (b) Referenses (T2)

и такой расклад по записям:

T1 T2 T3
1запись: 2000записей: 4000записей:
а="1" b="1" (a="1") с="1" (b="1")
...................... .....................
b="2000" (a="1") с="2000" (b="1")
с="2001" (b="2")
............................
с="4000" (b="2")

Как мне сделать так, чтобы при удалении
записи из Т1 с а="1", из Т3 удалились связные с="1...4000" по ключам b="1&2",
а потом из Т2 b="1..2000" по ключу а="1",
то есть каскадное удаление сразу из трех таблиц ????

2) И еще один вопрос:
я использую PHP как модуль Apache.....
есть такая переменная,
max_execution_time = ???? ;
;Maximum execution time of each script, in seconds
по умолчанию она у меня 60,
это означает, что при загрузке
апача, пхп просканит php.ini,
и не будет изменять в течении всей работы......
Можно ли как нибуть програмным путем из PHP
скрипта изменить значение этой переменой,
скажем на 180 сек, или
вообще, чтобы не было ограничение на исполнеие
скрипта(это предпочтительнее),
а потом вернуть все как было???

Всем заранее спасибо!


-----------------------------------------------------------
С уважением,MySQLdb
...
Рейтинг: 0 / 0
CascadeDelete&TimeExecution
    #32444942
MySQLdb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сори за абру:
T1
1запись:
а="1"

T2
2000записей:
b="1" (a="1")
......................
b="2000" (a="1")

T3
4000записей:
с="1" (b="1")
.....................
с="2000" (b="1")
с="2001" (b="2")
............................
с="4000" (b="2")

-----------------------------------------------------------
С уважением,MySQLdb
...
Рейтинг: 0 / 0
CascadeDelete&TimeExecution
    #32445638
Фотография Антон К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://ru2.php.net/manual/en/function.set-time-limit.php
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / CascadeDelete&TimeExecution
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]