熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Oracle >> 正文

用CREATE TABLE陳述式聲明計算數據列

2013-11-13 22:21:00  來源: Oracle 

  回到關系型數據庫理論創立者E F Codd的時代一個普遍原理出現了永遠都不要保存能夠被計算的(內容)這一原理回避了這樣一個問題我們應該在什麼地方計算這個已經計算出來的結果呢?那麼缺省的答案是在前端應用程序裡
  
  想像一下一個含有SubTotal和TaxRate列的表格根據這一原則TaxAmount和Total這兩個應該是虛擬的所以要將它們作為查看表或者存儲過程的一部分創建或者換種方法讓前端應用程序來生成它們並把它們呈現給用戶
  
  這個原則的一個替換方法叫做計算數據列(computed column)有了這種表示方法你可以將計算數據列聲明為CREATE TABLE陳述式的一部分盡管這可能會被發布給數據庫(不論是通過圖形用戶界面還是直接作為數據定義語言的指令)
  
  現在讓我們來假設有一個數據庫它包含有對房屋粉刷工作的估價忽略諸如房間裡門窗數量這樣的細節(並假設所有的牆都刷上相同的顏色)就會帶來兩個問題我們要把天花板塗上相同的顏色嗎(一般情況下答案是不會我們要塗幾層(一般情況下答案是兩層)?
  
  如果沒有計算數據列的話我們就沒有更好的辦法來處理這些問題這樣就只有把這些結果的計算推給前端應用程序而有了計算數據列我們就可以把方程式嵌入到數據庫裡創建一個虛擬的數據列供任何前端使用
  
  你可以用下面這個陳述式來創建表格
  
  CREATE TABLE [TestComputedColumns] (
    [PK] [int] IDENTITY ( ) NOT NULL
    [Length] [int] NOT NULL
    [Width] [int] NOT NULL
    [Height] [int] NOT NULL
    [Coats] [int] NOT NULL CONSTRAINT [DF_TestComputedColumns_Coats] DEFAULT
   ()
    [IncludeCeiling] [bit] NOT NULL CONSTRAINT
   [DF_TestComputedColumns_IncludeCeiling] DEFAULT ()
    [Area] AS (( * ([Height] * [Length] + [Height] * [Width]) + [Length] *
   [Width] * [IncludeCeiling]) * [Coats])
    CONSTRAINT [PK_TestComputedColumns] PRIMARY KEY CLUSTERED
    (
      [PK]
    ) ON [PRIMARY]
  ) ON [PRIMARY]
  GO
  
  你可以使用前端插入一些數據行看看它是如何工作的例如使用Access +創建一個指向你數據庫的訪問數據工程(Access Data ProjectADP)選擇表格然後創建一個AutoForm輸入一兩個數據行然後通過你的輸入翻回到前面你會看到計算數據列得到了正確的值
From:http://tw.wingwit.com/Article/program/Oracle/201311/18841.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.