熱點推薦:
您现在的位置: 電腦知識網 >> 操作系統 >> Windows優化 >> 正文

使用CREATE TABLE語句聲明一個計算列

2013-11-12 16:44:19  來源: Windows優化 

  追溯到關系數據庫理論的創始人E F Codd就出現了這樣一個通用原則永遠不存儲可被計算的數據這個原則回避了這樣一個問題我們應該在什麼地方計算這個計算結果?默認的答案是在前台應用程序
  
  假設一個表包含SubTotal 和TaxRate 兩個列根據這一原則TaxAmount 和Total 應該是虛的因此將它們創建為視圖或存儲過程的一部分或者采用另外一種方法將它們留給前台應用程序來計算並將結果呈現給用戶
  
  該原則的一個替代方案叫做計算列(computed column)使用這個表達式你就可以將一個計算列聲明為 CREATE TABLE 語句的一部分然而它還可以下達給數據庫(要麼是通過圖形用戶界面 GUI 要麼直接通過數據定義語言 DDL 指令)
  
  假設一個數據庫包含有房子粉刷估計忽略一些細節比如房子的窗戶和門的數目(並假設所有的牆都粉刷成同樣的顏色)還有兩個問題需要解決我們要將天花板粉刷成一樣的顏色嗎(一般答案都是不要我們要粉刷幾層(一般答案都是兩層)?
  
  如果不使用計算列我們就要把這些問題推遲到以後解決並把結果計算任務交給前台應用程序來完成有了計算列我們就可以在數據庫中嵌入公式創建一個虛列提供給任何前台使用
  
  可以使用下面這樣的語句來創建表
  
  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創建一個 Access 數據項目(ADPAccess Data Project)指向你的數據庫選擇表然後創建一個 AutoFrom(自動窗體)輸入一兩行數據然後翻回到你所輸入的條目你將看到計算列已經有了正確的值
From:http://tw.wingwit.com/Article/os/youhua/201311/10780.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.