2017年1月13日 星期五

SQL SERVER欄位資料類型為Timestamp的使用範例

Timestamp說明:
TimestampSQL SERVER資料庫內自動產生的唯一二進位數字的資料類型,Timestamp通常用來作為版本戳記資料表資料列的機制,簡單來說就是ROW的版本控管,大小為8位元組。只要資料有更新或新增Timestamp的內容就會遞增。

Timestamp的應用情境:


若有兩個人同時在應用程式編輯同一筆資料,使用Timestamp可以防止更新被覆蓋。

Timestamp使用範例:
(1)新增資料:
TimestampSQL SERVER會自動產生,不用特別匯入。

USE [TestDataTypeDB]
GO
--建立測試timestamp的資料表
CREATE TABLE [dbo].[TestTable](
 [nid] [int] NOT NULL,
 [timeid] [timestamp] NOT NULL,
 datetimes DATETIME2 not NULL
) ON [PRIMARY]

GO
--插入兩筆資料(timestamp是SQL SERVER會自動產生,不用特別匯入)
INSERT INTO [dbo].[TestTable](nid,datetimes)
VALUES(1,GETDATE()),(2,GETDATE())
GO
--檢視結果
SELECT * FROM [dbo].[TestTable]
GO

--更新一筆資料,資料版本會改變
UPDATE [dbo].[TestTable]
SET datetimes=GETDATE()+1
WHERE nid = 1
GO
--檢視結果
SELECT * FROM [dbo].[TestTable]
GO


--插入一筆新資料,新資料版本會是最新的版本
INSERT INTO [dbo].[TestTable](nid,datetimes)
VALUES(3,GETDATE())
GO
SELECT * FROM [dbo].[TestTable]
GO


(2)資料匯入:


在使用SSIS或是匯入匯出精靈轉入資料時,如果沒有略過資料類型為Timestamp的欄位會產生資料轉檔錯誤。


我們將資料類型為Timestamp的資料行忽略,此時就可以成功匯入資料內容到目的端了。



搞定收工

沒有留言:

張貼留言