创建自定义回滚

时间:2010-09-24 00:32:17

标签: mysql rollback

因此,我将浏览数据库并删除一些基本上与其他访问级别重复的不需要的访问级别。我们的数据库结构有一个列user_level,它是一个枚举,有一堆不同的字符串(我知道这不是运行用户访问级别的好方法,但这是原始开发人员制作它的方式)
我要做的是创建一个回滚,它将使用适当的user_level保存所有user_id,以便在几天内如果我们发现我们的访问级别存在问题,我们可以回滚而不会搞乱任何其他更改自从我们运行更新命令以来,数据库中已经发生了。

我想做的只是做一个

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个用户记录。

所以我的问题是,是否有人对我应该如何进行有任何想法,可能还有一些自定义回滚示例。

编辑:

所以我正在寻找相当于这个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文件中,如果我也需要运行此文件。

1 个答案:

答案 0 :(得分:0)

我刚刚使用PHP方法创建了一个php脚本来查询数据库并将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'