Итак, я просматриваю нашу базу данных и удаляю некоторые ненужные уровни доступа, которые в основном являются дубликатами других. В нашей структуре базы данных есть столбец 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 и просто запустить этот файл, если мне тоже понадобится.
Я просто перешел на 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'