| 導購 | 订阅 | 在线投稿
分享
 
 
當前位置: 王朝網路 >> oracle >> 臨時表在Oracle數據庫與SQL Server數據庫中的異同(1)
 

臨時表在Oracle數據庫與SQL Server數據庫中的異同(1)

2008-06-27 06:55:54  編輯來源:互聯網  简体版  手機版  評論  字體: ||
 
 
  常見應用:

  臨時表在數據庫設計中,有著舉足輕重的作用。

  如我們可以利用臨時表的功能來限制同一個用戶名多次登陸到同一個系統中去。例如現在有一個財務管理系統,企業希望同一個用戶在同一時間裏只能登陸一次,這主要是用來限制每位員工都以自己的用戶名與密碼登陸。如此限制的目的主要是爲財務管理系統中的每張單據找到其主人。

  原始方案:

  在以前數據庫設計的時候,也有人不用臨時表進行這方面的限制,而用實體數據庫表來登記相關的信息。如在用戶信息表中有一列專門用來記錄用戶的當前登陸狀態。當用戶登陸系統後,該用戶登陸狀態的字段就改爲Y,而當用戶退出系統能後,該字段的內容又改爲N。這個方案看起來是可行的,但是,其在實際應用中,有一個非常大的漏洞。若用戶登陸到系統後,終端因爲各種原因,如病毒、斷電等突然狀況,發生死機的話,此時,用戶雖然沒有登陸到系統中去,但是,因爲其退出系統的時候,沒有正常退出,這就導致在財務管理系統中的用戶信息表中,顯示該用戶的登陸狀態仍然爲Y。此時,用戶嘗試登陸到財務管理系統中去的話,就會被系統拒絕,系統會認爲該用戶已經登陸了系統,不能重複登陸。

  所以說,利用實體表來記錄用戶登陸的信息,存在著管理上的漏洞。

  利用臨時表實現用戶重新登陸的限制:

  後來,數據庫設計師們想,能否把該用戶登陸信息記錄在一張臨時性的表中呢?當用戶結束會話,無論是正常的退出還是因爲意外情況的退出,只要用戶結束一個會話後,那麽該臨時表中的內容就會清空。

  若跟這個需求結合的話,數據庫設計師就希望能夠實現如下功能。

  當用戶登陸系統開始一個會話後,數據庫系統就建立一張臨時表,該表中至少有一個內容,就是用戶的帳號(或者該帳號對應的ID)。當有其他用戶登陸到系統的時候,系統會先從這張臨時表中查詢,是否有相同的用戶記錄。若有的話,就會拒絕用戶的登陸,警告用戶已經有相同的用戶登陸了。當用戶正常退出系統或者因爲以外情況退出系統結束當前會話的時候,那麽數據庫系統就會清除這張表的內容。如此,當用戶下次登陸系統的話,即使是在意外情況下登陸系統的,也可以正常的登陸。

  可見,數據庫的臨時表在企業實際應用中有著舉足輕重的作用。

  在ORACLE數據庫與SQL SERVER數據庫中,都實現了臨時表的功能。不過兩者實現的方式有差異。而不同的實現方式又賦予了其不同的特點,這是我們在數據庫選型中不得不重視的一方面內容。

  兩個數據庫臨時表實現方式的異同:

  SQL SERVER臨時表跟ORACLE數據庫臨時表的差異,可以利用一句話來概括。SQL SERVER 臨時表是在需要用到的時候創建;而ORACLE 數據庫的臨時表,則是在數據庫初始化中就開始創建,在具體的會話或者事務開始後進行操作,結束一個會話或者結束一個事務後該數據庫的內容就會被清空。

  1、在創建時的異同。

  SQL SERVER 數據庫的臨時表,是在實際需要時創建的。具體的來說,可以利用SELECT語句與CREAT語句創建臨時表。如可以利用SELECT * INTO #USER_TEMP FROM USER;通過這條語句就可以在需要的時間創建一張臨時表。除此之外,還可以利用CREATE語句,在需要的時候創建臨時表。

  而ORACLE數據庫,是在數據庫系統初始化的過程中,就需要建立臨時表。也就是在用戶安裝財務管理軟件系統時,初始化數據庫系統時,系統就會創建臨時表。而不是在臨時表需要用到的時候,才被創建。故,ORACLE數據庫的臨時表創建方式只有一種,在數據庫初始化的時候,利用CREATE創建數據庫臨時表。所以,ORACLE數據庫臨時表,又有另一種說法。我們一般稱ORACLE數據庫的臨時表是永久性的,只是臨時表的內容是臨時的,在需要用到臨時表時,只要直接調用即可,而不用臨時創建。這不像SQL SERVER數據庫那樣,只有在用到時,才創建該臨時表;當結束會話時,不僅表中的數據被清空了,而且該表也被刪除了。

  筆者評論:

  筆者還是比較喜歡ORACLE數據庫臨時表的實現方式。爲什麽呢?因爲我們都知道,數據庫定義語言,如CREATE等,比較占用系統資源。若在數據庫SQL SERVER數據庫系統設計的過程中,前台程序頻繁的使用CREATE等數據庫定義語言創建臨時表的話,會對SQL server數據庫系統的運行效率産生很大的不利影響;而且,每次運行的話,都會有類似的不利影響,因爲每次運行都會有一個創建臨時表的過程。而ORCLE數據庫中,則是在系統初始化的時候才利用CREATE語句,所以,只是在系統初始化的時候,可能性能會受到影響,而在以後的數據庫運行中,就不會爲這個老是運行CREATE語句而困饒。所以,我個人還是比較喜歡采用ORACLE系統的臨時表處理方案。
 
 
 
上一篇《oracle裏long類型的總結(1)》
下一篇《DBA:巧用ora2html收集Oracle數據庫信息》
 
 
 
日版寵物情人插曲《Winding Road》歌詞

日版寵物情人2017的插曲,很帶節奏感,日語的,女生唱的。 最後聽見是在第8集的時候女主手割傷了,然後男主用嘴幫她吸了一下,插曲就出來了。 歌手:Def...

兄弟共妻,我成了他們夜裏的美食

老鍾家的兩個兒子很特別,就是跟其他的人不太一樣,魔一般的執著。兄弟倆都到了要結婚的年齡了,不管自家老爹怎麽磨破嘴皮子,兄弟倆說不娶就不娶,老父母爲兄弟兩操碎了心...

如何磨出破洞牛仔褲?牛仔褲怎麽剪破洞?

把牛仔褲磨出有線的破洞 1、具體工具就是磨腳石,下面墊一個硬物,然後用磨腳石一直磨一直磨,到把那塊磨薄了,用手撕開就好了。出來的洞啊很自然的。需要貓須的話調幾...

我就是掃描下圖得到了敬業福和愛國福

先來看下敬業福和愛國福 今年春節,支付寶再次推出了“五福紅包”活動,表示要“把欠大家的敬業福都還給大家”。 今天該活動正式啓動,和去年一樣,需要收集“五福”...

冰箱異味産生的原因和臭味去除的方法

有時候我們打開冰箱就會聞到一股異味,冰箱裏的這種異味是因爲一些物質發出的氣味的混合體,聞起來讓人惡心。 産生這些異味的主要原因有以下幾點。 1、很多人有這種習...

《極品家丁》1-31集大結局分集劇情介紹

簡介 《極品家丁》講述了現代白領林晚榮無意回到古代金陵,並追隨蕭二小姐化名“林三”進入蕭府,不料卻陰差陽錯上演了一出低級家丁拼搏上位的“林三升職記”。...

李溪芮《極品家丁》片尾曲《你就是我最愛的寶寶》歌詞

你就是我最愛的寶寶 - 李溪芮 (電視劇《極品家丁》片尾曲) 作詞:常馨內 作曲:常馨內 你的眉 又鬼馬的挑 你的嘴 又壞壞的笑 上一秒吵鬧 下...

烏梅的功效與作用以及烏梅的食用禁忌有哪些?

烏梅,又稱春梅,中醫認爲,烏梅味酸,性溫,無毒,具有安心、除熱、下氣、祛痰、止渴調中、殺蟲的功效,治肢體痛、肺痨病。烏梅泡水喝能治傷寒煩熱、止吐瀉,與幹姜一起制...

什麽是脂肪粒?如何消除臉部脂肪粒?

什麽是脂肪粒 在我們的臉上總會長一個個像脂肪的小顆粒,弄也弄不掉,而且顔色還是白白的。它既不是粉刺也不是其他的任何痘痘,它就是脂肪粒。 脂肪粒雖然也是由油脂...

網絡安全治理:國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰受害者

來源:中國青年報 新的攻擊方法不斷湧現,黑客幾乎永遠占據網絡攻擊的上風,我們不可能通過技術手段杜絕網絡攻擊。國家安全保障的主要方向是打擊犯罪,而不是處置和懲罰...

 
 
 
  常見應用:   臨時表在數據庫設計中,有著舉足輕重的作用。   如我們可以利用臨時表的功能來限制同一個用戶名多次登陸到同一個系統中去。例如現在有一個財務管理系統,企業希望同一個用戶在同一時間裏只能登陸一次,這主要是用來限制每位員工都以自己的用戶名與密碼登陸。如此限制的目的主要是爲財務管理系統中的每張單據找到其主人。   原始方案:   在以前數據庫設計的時候,也有人不用臨時表進行這方面的限制,而用實體數據庫表來登記相關的信息。如在用戶信息表中有一列專門用來記錄用戶的當前登陸狀態。當用戶登陸系統後,該用戶登陸狀態的字段就改爲Y,而當用戶退出系統能後,該字段的內容又改爲N。這個方案看起來是可行的,但是,其在實際應用中,有一個非常大的漏洞。若用戶登陸到系統後,終端因爲各種原因,如病毒、斷電等突然狀況,發生死機的話,此時,用戶雖然沒有登陸到系統中去,但是,因爲其退出系統的時候,沒有正常退出,這就導致在財務管理系統中的用戶信息表中,顯示該用戶的登陸狀態仍然爲Y。此時,用戶嘗試登陸到財務管理系統中去的話,就會被系統拒絕,系統會認爲該用戶已經登陸了系統,不能重複登陸。   所以說,利用實體表來記錄用戶登陸的信息,存在著管理上的漏洞。   利用臨時表實現用戶重新登陸的限制:   後來,數據庫設計師們想,能否把該用戶登陸信息記錄在一張臨時性的表中呢?當用戶結束會話,無論是正常的退出還是因爲意外情況的退出,只要用戶結束一個會話後,那麽該臨時表中的內容就會清空。   若跟這個需求結合的話,數據庫設計師就希望能夠實現如下功能。   當用戶登陸系統開始一個會話後,數據庫系統就建立一張臨時表,該表中至少有一個內容,就是用戶的帳號(或者該帳號對應的ID)。當有其他用戶登陸到系統的時候,系統會先從這張臨時表中查詢,是否有相同的用戶記錄。若有的話,就會拒絕用戶的登陸,警告用戶已經有相同的用戶登陸了。當用戶正常退出系統或者因爲以外情況退出系統結束當前會話的時候,那麽數據庫系統就會清除這張表的內容。如此,當用戶下次登陸系統的話,即使是在意外情況下登陸系統的,也可以正常的登陸。   可見,數據庫的臨時表在企業實際應用中有著舉足輕重的作用。   在ORACLE數據庫與SQL SERVER數據庫中,都實現了臨時表的功能。不過兩者實現的方式有差異。而不同的實現方式又賦予了其不同的特點,這是我們在數據庫選型中不得不重視的一方面內容。   兩個數據庫臨時表實現方式的異同:   SQL SERVER臨時表跟ORACLE數據庫臨時表的差異,可以利用一句話來概括。SQL SERVER 臨時表是在需要用到的時候創建;而ORACLE 數據庫的臨時表,則是在數據庫初始化中就開始創建,在具體的會話或者事務開始後進行操作,結束一個會話或者結束一個事務後該數據庫的內容就會被清空。 1、在創建時的異同。   SQL SERVER 數據庫的臨時表,是在實際需要時創建的。具體的來說,可以利用SELECT語句與CREAT語句創建臨時表。如可以利用SELECT * INTO #USER_TEMP FROM USER;通過這條語句就可以在需要的時間創建一張臨時表。除此之外,還可以利用CREATE語句,在需要的時候創建臨時表。   而ORACLE數據庫,是在數據庫系統初始化的過程中,就需要建立臨時表。也就是在用戶安裝財務管理軟件系統時,初始化數據庫系統時,系統就會創建臨時表。而不是在臨時表需要用到的時候,才被創建。故,ORACLE數據庫的臨時表創建方式只有一種,在數據庫初始化的時候,利用CREATE創建數據庫臨時表。所以,ORACLE數據庫臨時表,又有另一種說法。我們一般稱ORACLE數據庫的臨時表是永久性的,只是臨時表的內容是臨時的,在需要用到臨時表時,只要直接調用即可,而不用臨時創建。這不像SQL SERVER數據庫那樣,只有在用到時,才創建該臨時表;當結束會話時,不僅表中的數據被清空了,而且該表也被刪除了。   筆者評論:   筆者還是比較喜歡ORACLE數據庫臨時表的實現方式。爲什麽呢?因爲我們都知道,數據庫定義語言,如CREATE等,比較占用系統資源。若在數據庫SQL SERVER數據庫系統設計的過程中,前台程序頻繁的使用CREATE等數據庫定義語言創建臨時表的話,會對SQL server數據庫系統的運行效率産生很大的不利影響;而且,每次運行的話,都會有類似的不利影響,因爲每次運行都會有一個創建臨時表的過程。而ORCLE數據庫中,則是在系統初始化的時候才利用CREATE語句,所以,只是在系統初始化的時候,可能性能會受到影響,而在以後的數據庫運行中,就不會爲這個老是運行CREATE語句而困饒。所以,我個人還是比較喜歡采用ORACLE系統的臨時表處理方案。
󰈣󰈤
 
 
 
  免責聲明:本文僅代表作者個人觀點,與王朝網路無關。王朝網路登載此文出於傳遞更多信息之目的,並不意味著贊同其觀點或證實其描述,其原創性以及文中陳述文字和內容未經本站證實,對本文以及其中全部或者部分內容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,並請自行核實相關內容。
 
 
Afternoon Girl
精致的外景拍攝
零點一公分的距離
俏麗迷人 視覺享受
北海老城隨拍(二)
夢中的郭河
Gassin(法國最美麗小鎮之一) part
瑤池夕照
 
>>返回首頁<<
 
 熱帖排行
 
 
 
 
© 2005- 王朝網路 版權所有