2010-09-24 206 views
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個用戶記錄。

所以我的問題是,沒有任何人有這種風俗回滾我應該如何進行任何想法和可能的一些例子。

編輯:

所以要尋找的這個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文件,只要運行這個文件,我也需要。

回答

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'