Sql-Server

計算欄位更新每一行

  • January 26, 2017

我在表中添加了一個計算欄位,並且只想更新NULL行(或“新”行)。出了點問題,DateTime當插入 1 行時,我的表中的每一行都被更新為目前行。這是Create Table語法,我必須做什麼才能只用目前行更新“新”行DateTime

CREATE TABLE [dbo].[SE](
[dbID] [int] IDENTITY(1,1) NOT NULL,
[uqID] [varchar](31) NOT NULL,
[POD] [varchar](255) NULL,
[EC] [varchar](255) NULL,
[S1] [varchar](35) NULL,
[S2] [varchar](35) NULL,
[S3] [varchar](35) NULL,
[S4] [varchar](35) NULL,
[S5] [varchar](35) NULL,
[S6] [varchar](35) NULL,
[S7] [varchar](35) NULL,
[PSD] [varchar](50) NULL,
[DS] [datetime] NULL,
[CN] [varchar](max) NULL,
[autodate]  AS (getdate()),
PRIMARY KEY CLUSTERED 
(
[dbID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,     ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

GO

您不需要計算列,而只需使用日期時間(不可為空)列,並使用 getdate() 進行預設約束。

表定義 SQL 中列的語法如下:

[autodate] DATETIME NOT NULL DEFAULT(GETDATE())

SQL Server 中的計算列是在查詢時計算的(除非它是 PERSISTED,否則它有一個值儲存在磁碟上並且可以被索引,但是它仍然是計算的)。它旨在是可變的,並且是在另一列或多列上計算的結果。

DEFAULT 約束只是將預設值插入到列中以進行任何插入,但隨後它像任何其他數據列一樣被保存為固定值。

引用自:https://dba.stackexchange.com/questions/162325