【SQL Server 2012 DBA】T-SQL之Computed column 簡述

Computed column是一個虛擬列,在其所屬表中並無物理存在,除非我們將其標爲PERSISTED; 它用來存儲其所屬表的其他列經過計算的值。

Comupted column 不能有默認值、不能有外鍵關聯也不能接收NOT NULL限制;因爲它的值取決於其他列的計算值,所以我們很容易理解它不能接收插入新值和修改。Computed column 可以和其他列一起作爲主鍵也可以加UNIQUE修飾,可以加爲索引列,當其爲索引列的時候需要注意的是,如果參加計算的某一項是可變的,比如時間,那就不能作爲 索引列。


添加Computed column的兩種方式:

1. 定義表時:

IF EXISTS(select * from sys.objects where object_id = OBJECT_ID('Inventory'))
BEGIN
	DROP TABLE Inventory
END
GO

CREATE TABLE Inventory
(
ItemID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
ItemsInStore int NOT NULL,
ItemsInWarehouse int NOT NULL,
TotalItems as itemsInStore + ItemsInWarehouse -- PERSISTED
)

Insert into Inventory (ItemsInStore,ItemsInWarehouse) values( 2,3);
Insert into Inventory (ItemsInStore,ItemsInWarehouse) values( 4,3);
GO

select * from Inventory;

2. 爲表添加新列:
IF EXISTS(select * from sys.objects where object_id = OBJECT_ID('Inventory'))
BEGIN
	DROP TABLE Inventory
END
GO

CREATE TABLE Inventory
(
ItemID int IDENTITY(1,1) NOT NULL PRIMARY KEY,
ItemsInStore int NOT NULL,
ItemsInWarehouse int NOT NULL
)
GO

Insert into Inventory (ItemsInStore,ItemsInWarehouse) values( 2,3);
Insert into Inventory (ItemsInStore,ItemsInWarehouse) values( 4,3);
GO

ALTER TABLE Inventory ADD TotalItems AS itemsInStore + ItemsInWarehouse -- PERSISTED ;
GO

select * from Inventory;







發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章