假設我在表中有兩列。如果我試圖插入到一列中,那麼該值也應該出現在另一列中。 但我不想因性能而使用觸發器。默認插入另一列時自動插入到一列中
我看到一些地方,同時增加他使用的數據類型後,「表達」的新列
請幫助我。
假設我在表中有兩列。如果我試圖插入到一列中,那麼該值也應該出現在另一列中。 但我不想因性能而使用觸發器。默認插入另一列時自動插入到一列中
我看到一些地方,同時增加他使用的數據類型後,「表達」的新列
請幫助我。
它被稱爲計算列。
這個例子將創建一列(稱爲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
);
持久計算列可用於索引和外鍵。
建議您添加'InventoryValue'是在select上計算的,而不是在insert/update上計算的。 – Bacs 2015-02-06 13:27:27
CREATE TABLE dbo.tbl
(
ID int
, col2 AS ID)
爲什麼你想要兩個完全相同的列?它是什麼樣的RDBMS設計? – 2015-02-06 13:13:18
你在說默認值嗎? – 2015-02-06 13:17:37
你可以編輯你的問題,使其更清晰?它表明你想把相同的值放在兩欄中,但是從你以前的評論我不認爲這就是你的意思。 – Bacs 2015-02-06 13:25:26