2015-02-06 113 views
1

假設我在表中有兩列。如果我試圖插入到一列中,那麼該值也應該出現在另一列中。 但我不想因性能而使用觸發器。默認插入另一列時自動插入到一列中

我看到一些地方,同時增加他使用的數據類型後,「表達」的新列

請幫助我。

+1

爲什麼你想要兩個完全相同的列?它是什麼樣的RDBMS設計? – 2015-02-06 13:13:18

+0

你在說默認值嗎? – 2015-02-06 13:17:37

+1

你可以編輯你的問題,使其更清晰?它表明你想把相同的值放在兩欄中,但是從你以前的評論我不認爲這就是你的意思。 – Bacs 2015-02-06 13:25:26

回答

5

它被稱爲計算列。

這個例子將創建一列(稱爲InventoryValue)將包含基於其它兩列(QtyAvailable單價)的值。

來源:https://msdn.microsoft.com/en-us/library/ms188300.aspx

CREATE TABLE dbo.Products 
(
    ProductID int IDENTITY (1,1) NOT NULL 
    , QtyAvailable smallint 
    , UnitPrice money 
    , InventoryValue AS QtyAvailable * UnitPrice 
); 

注:

InventoryValue值將在SELECT時間來計算,而不是在插入/更新。如果您希望在INSERT時計算它,那麼您需要將其標記爲PERSISTED。如果您在計算中使用getdate函數,這一點尤其重要。

CREATE TABLE dbo.Products 
(
    ProductID int IDENTITY (1,1) NOT NULL 
    , QtyAvailable smallint 
    , UnitPrice money 
    , InventoryValue AS QtyAvailable * UnitPrice PERSISTED 
); 

持久計算列可用於索引和外鍵。

+0

建議您添加'InventoryValue'是在select上計算的,而不是在insert/update上計算的。 – Bacs 2015-02-06 13:27:27

1
CREATE TABLE dbo.tbl 
(
    ID int 

    , col2 AS ID)