我有一個場景,我需要暫時將數據插入表中,稍後再批准或確認,使其成爲永久的。數據將被用戶插入,並且需要由超級用戶進行批准或拒絕。臨時表和主表 - mysql
我現在想的是有兩個不同但相同的表(臨時和主要),用戶將數據插入臨時表。超級用戶確認後,數據將被移至主表。但是,如果數據庫包含非常大量的表,那麼這個過程將變得更加複雜。
編輯:這意味着到創建或編輯&刪除命令。
有沒有更簡單或更好的方法來做到這一點?
請建議。
我有一個場景,我需要暫時將數據插入表中,稍後再批准或確認,使其成爲永久的。數據將被用戶插入,並且需要由超級用戶進行批准或拒絕。臨時表和主表 - mysql
我現在想的是有兩個不同但相同的表(臨時和主要),用戶將數據插入臨時表。超級用戶確認後,數據將被移至主表。但是,如果數據庫包含非常大量的表,那麼這個過程將變得更加複雜。
編輯:這意味着到創建或編輯&刪除命令。
有沒有更簡單或更好的方法來做到這一點?
請建議。
使用版本表(相關評論):
這裏的想法是有一個版本表;當用戶更改一條信息時,新版本將與相關的ID一起存儲在此表中。
然後,您只需加入PersonID並選擇最近接受的版本即可。
這意味着用戶可以使盡可能多的更新,因爲他們想要的,但他們將不會顯示,直到超級用戶接受他們,這也意味着數據永遠不會被破壞(存儲在版本表),他們並不需要實現回滾,因爲它已經在那裏了!
見:http://sqlfiddle.com/#!3/cc77f/4
人民表:
ID | Age Etc... (Info That Doesn't Change)
-----------------------
1 | 12
2 | 16
3 | 11
People版本表:
VersionID | PersonID | Name | Approved
-----------------------
1 | 1 | Stevz | FALSE
2 | 1 | Steve | TRUE
3 | 2 | James | TRUE
4 | 3 | Jghn | FALSE
5 | 3 | John | TRUE
示例表SQL
CREATE TABLE People
(
id int identity primary key,
age int
);
CREATE TABLE PeopleVersion
(
versionId int identity primary key,
peopleId int,
name varchar(30),
approved varchar(30)
);
實例查詢
SELECT * FROM People p
INNER JOIN PeopleVersion v ON p.id = v.peopleID
WHERE v.approved = 'TRUE'
ORDER BY versionId DESC
進一步的見解:
你甚至可以有經批准的三種狀態; null
意味着沒有管理員選擇的是,TRUE
意味着它已經被接受,FALSE
意味着它被拒絕
您可以顯示用戶從null
和true
最近,顯示管理所有三個,並顯示該網站的其他用戶只版本的是true
舊評論
你可以只添加一個字段名爲批准表然後隱藏沒有批准標誌設置爲TRUE
的任何內容?
它可能默認爲FALSE
,只有超級用戶將能夠看到設置爲FALSE
例如標誌項目
Name | Age | Approved
-----------------------
Steve | 12 | FALSE
James | 16 | TRUE
John | 11 | FALSE
用戶將只能看到James
,但超級用戶會看到所有三家上市
或者使用臨時和主表是看這個問題的另一種方式,儘管這可能會導致問題,因爲一切都變得更大
最簡單的方法是在表內的標誌標識批准或尚未批准的項目。
然後,只需將檢索邏輯更改爲僅顯示該標誌設置爲批准的條目。
但我也希望用戶所做的更改也應該可見。如果管理員拒絕更改,它應該恢復。這是通過更新,刪除和插入命令完成的。 –
那我可以推薦一個版本表(上面加了) –