Можно ли проверить запрос к MySQL, не выполняя его?

ChesterOne

Guest
Можно ли проверить запрос к MySQL, не выполняя его?

Допустим пользователь вводит несколько запросов разделенных ";". И эти запросы должны быть выполнены либо все, либо ни один. Т.е. нужно проверить запросы на валидность, прежде чем выполнить их. Ну что то вроде транзакции.
Я сам ответа не нашел. И кажеца это невозможно. Но может я ошибаюсь?
Спасибо.
 

.des.

Поставил пиво кому надо ;-)
В случае транзакционных таблиц.

Код:
SET AUTOCOMMIT=0; START TRANSACTION;
потом прогоняем все запросы и ROLLBACK;
только надо исключить возможность запросов
Код:
ALTER TABLE, BEGIN, CREATE INDEX, 
DROP DATABASE, DROP TABLE, 
RENAME TABLE, TRUNCATE;
В случае MyISAM придется извращаться:
Код:
SHOW TABLES;
для простоты создаем эти таблицы в новой базе
Код:
CREATE DATABASE new_db;
CREATE TABLE new_db.table_name LIKE old_db.table_name;
Прогоняем запросы в новой базе. В том, что в новой базе таблицы будут пустые, думаю ничего страшного не будет, так как навскидку я не вижу чему это может помещать в случае с mysql
Но все равно тут много нюансов, например запрос содержит прямое указание к какой базе обращаться).
ну и соответственно
Код:
DROP DATABASE new_db;
 
Сверху