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

时间:2015-02-06 13:08:51

标签: sql sql-server sql-server-2008 tsql

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

我在添加新列时看到了一些内容,他在数据类型

之后使用了“expression”

请帮帮我。

2 个答案:

答案 0 :(得分:5)

它被称为计算列。

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

来自: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
);

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

答案 1 :(得分:1)

CREATE TABLE dbo.tbl
(
    ID int 

  , col2 AS ID )