假设我在表中有两列。如果我试图插入一列,那么该值也应自动出现在另一列中。 但由于性能的原因,我不想使用触发器。
我在添加新列时看到了一些内容,他在数据类型
之后使用了“expression”请帮帮我。
答案 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 )