|
CascadeDelete&TimeExecution
|
|||
---|---|---|---|
#18+
Всем доброго времени суток! 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2004, 10:51 |
|
CascadeDelete&TimeExecution
|
|||
---|---|---|---|
#18+
сори за абру: 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 ... |
|||
:
Нравится:
Не нравится:
|
|||
17.03.2004, 10:55 |
|
|
start [/forum/topic.php?fid=23&msg=32444942&tid=1479952]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
131ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 232ms |
0 / 0 |