Создать пользовательский откат

0

Итак, я просматриваю нашу базу данных и удаляю некоторые ненужные уровни доступа, которые в основном являются дубликатами других. В нашей структуре базы данных есть столбец user_level, который представляет собой перечисление, имеющее кучу разных строк (я знаю, что это отличный способ для запуска уровней доступа пользователей, но это то, как это сделал оригинальный разработчик).
То, что я хочу сделать, - это создать откат, который сохранит все user_id с соответствующим уровнем user_level, чтобы через несколько дней, если мы увидим, что у нас есть проблемы с нашими уровнями доступа, мы можем откатиться, не нарушая никаких других изменений, которые произошли в базе данных, так как мы запустили команду обновления.

То, что я собирался сделать, это просто сделать

SELECT users.id, users.user_level
FROM users
WHERE users.user_level NOT IN ('Program Administrator','Executive','Sales Manager / Office Manager/ Company President');

а затем просто манипулировать данными таким образом, но мне бы очень хотелось, чтобы он создал запрос для меня, поэтому мы можем поместить его в нашу систему отслеживания билетов, и все, что нам нужно сделать, это скопировать/вставить запрос в наш sql чтобы запустить его для отката.

Однако я не уверен, какой лучший подход. В нашей базе данных имеется около 58 000 пользовательских записей.

Итак, у меня есть вопрос, есть ли у кого-нибудь идеи о том, как я должен действовать, и, возможно, некоторые примеры этого отката.

EDIT:

Итак, я ищу эквивалент этого PHP-кода, но для MySQL

while ($user = mysql_fetch_array($databaseObj->result)) {
    echo "UPDATE users SET user_level = '". $user['user_level'] ."' WHERE id='".$user['id']."'";
    echo "<br>";
}

который выведет

UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='80006' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='48' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='42' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='47' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='49' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='52' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='58' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='60'

который затем я могу сохранить в файле .sql и просто запустить этот файл, если мне тоже понадобится.

Теги:
rollback

1 ответ

0
Лучший ответ

Я просто перешел на PHP-подход и создал php script для запроса базы данных и вывода команд обновления SQL в файл.

while ($user = mysql_fetch_array($databaseObj->result)) {
    echo "UPDATE users SET user_level = '". $user['user_level'] ."' WHERE id='".$user['id']."'";
    echo "<br>";
}

который выведет

UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='80006' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='48' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='42' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='47' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='49' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='52' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='58' 
UPDATE users SET user_level = 'Sales Person/Packager' WHERE id='60'

Ещё вопросы

Сообщество Overcoder
Наверх
Меню