默认情况下,在插入另一列时自动插入一列

kou*_*nda 1 sql t-sql sql-server sql-server-2008

假设我在表中有两列.如果我试图插入一列,那么该值也应自动出现在另一列中.但我不想因为性能而使用触发器.

我在添加新列时看到了一些地方,他在数据类型之后使用了"表达式"

请帮我.

Pet*_*ell 5

它被称为计算列.

此示例将创建一个列(称为InventoryValue),该列将包含基于另外两列(QtyAvailableUnitPrice)的值.

来自: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
);
Run Code Online (Sandbox Code Playgroud)

注意:

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
);
Run Code Online (Sandbox Code Playgroud)

持久计算列可用于索引和外键.