|
|
|
Несколько Вопросов !
|
|||
|---|---|---|---|
|
#18+
Добрый всем вечер ! У меня вот возникло несколько не понятных мне вопросов, надеюсь, что кто-нибудь сможет мне почочь с ними. 1) Подскажите пожалуйста, как можно вывести запрос вот такого типа: start transaction; select * from t1; select * from t2; select * from t3; commit; с помощью функции mysql_query()? Ведь эта функция выдает ошибку, когда в ней ставишь ';' Может как по другому это можно выполнить ? 2) Имеется ли в MySQL поддержка удаления связаных строк (по внешним ключам) из разных таблиц? ну т.е. удаляю например из таблицы t1 строку и автоматически удаляется такая же строка (такой же id) из таблицы t2 Надеюсь на ваш опыт и доброту....... Заранее спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2005, 17:43:04 |
|
||
|
Несколько Вопросов !
|
|||
|---|---|---|---|
|
#18+
хм. Хм. на доброту?? Ну ладно тогда. 1) Вы похоже человек с interbase/firebird опытом. В mysql в отличии от них нет нужды открывать транзакцию для select 2) а что вы хотите в результате такого составного запроса? список записей из всех перечисленных таблиц? в таком случае используйте select .... union select .... и т.д. Или прочитайте документацию про merge тип таблиц. 3) по поводу каскадирования удалений - есть в innodb таблицах. точно также как и везде описываешь foreigh key тра-ляля on delete cascade . Вот тут подробнее http://dev.mysql.com/doc/refman/5.0/en/innodb-foreign-key-constraints.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.12.2005, 19:15:48 |
|
||
|
Несколько Вопросов !
|
|||
|---|---|---|---|
|
#18+
1) Да нет, мне не нужно выводить SELECT. Его я написал просто для примера. На самом деле, у меня имеется так сказать "форум" и при добавлении новой темы происходит ряд запросов, а именно вот эти: mysql_query('insert into letters values("",'.$mas[0].','.$_COOKIE['id'].',0,'.$fldr.',DATE_ADD(SYSDATE(),INTERVAL '.$time_zone.' HOUR))'); mysql_query('insert into topics values('.mysql_insert_id().',"'.$_POST['topic'].'")'); mysql_query('insert into messages values('.mysql_insert_id().',"'.$_POST['mess'].'")'); mysql_query('insert into new_letters values('.mysql_insert_id().','.$mas[0].','.$_COOKIE['id'].')'); mysql_query('update users set count=count+1 where id='.$_COOKIE['id']); Вот именно вот эти запросы я хочу вывести при помощи транзакций, как это можно сделать? - именно вот это я и хотел узнать! 2) По поводу Каскадирования - огромное спасибо ! Токо, у меня возник еще не болшой вопросик: Что быдет работать быстрее при выполнении запроса: Вот это delete from one,two using one,two where one.id=two.id and one.id=2; или Каскадное удаление? Заранее огромное спасибо ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.12.2005, 05:26:45 |
|
||
|
Несколько Вопросов !
|
|||
|---|---|---|---|
|
#18+
Если работать напрямую через API - почитайте мультизапросы, с 5.0 http://dev.mysql.com/doc/refman/5.0/en/c-api-multiple-queries.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2005, 16:06:36 |
|
||
|
Несколько Вопросов !
|
|||
|---|---|---|---|
|
#18+
Валентин К: Я так понял они работают только с версиями не ниже 5.0. А что если у меня 4ая версия стоит, как можно решить эту проблему? Будут ли корректно работать данные запосы: mysql_query('start transaction'); mysql_query('insert into letters values(null,'.$mas[0].','.$_COOKIE['id'].',0,'.$fldr.',DATE_ADD(NOW(),INTERVAL '.$time_zone.' HOUR))'); mysql_query('insert into subject values('.mysql_insert_id().',"'.$_POST['topic'].'")'); mysql_query('insert into contents values('.mysql_insert_id().',"'.$_POST['mess'].'")'); mysql_query('insert into new_letters values('.mysql_insert_id().','.$mas[0].','.$_COOKIE['id'].')'); mysql_query('update users set count=count+1 where id='.$_COOKIE['id']); mysql_query('commit'); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 20:02:48 |
|
||
|
Несколько Вопросов !
|
|||
|---|---|---|---|
|
#18+
В одной транзакции - непроблема, таблицы должны быть транзакционные InnoDB или BDB. ТОлько нужно каждый запрос выполнять отдельно, а потом постить. Проведите тест на ошибки. На транзакции тест проводить не нужно - они нормально работают. В начале нужно отключть автокоммит SET AUTOCOMMIT=0; А в конце лучше включить, чтобы обновлялась транзакция в других запросах... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 20:49:24 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33442735&tid=1853269]: |
0ms |
get settings: |
5ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
15ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 182ms |
| total: | 259ms |

| 0 / 0 |
