2011-01-13

對 uniqueidentifier 資料類型的資料行,設定其「預設值(Default)」為 0,也就是 00000000-0000-0000-0000-000000000000

uniqueidentifier 資料類型中儲存做為全域唯一識別碼 (GUID) 使用的 16 位元組二進位值。
GUID 是一種唯一的二進位數字;全世界的電腦都不會產生重複的 GUID 值。

GUID 的主要用途是在有許多站台與許多電腦的網路上指派一個唯一識別碼。

uniqueidentifier 值通常不會定義為常數。您可以利用下列方式指定 uniqueidentifier 常數:
(1) 字元字串格式:'6F9619FF-8B86-D011-B42D-00C04FC964FF'
(2) 二進位格式:0xff19966f868b11d0b42d00c04fc964ff

若要將 uniqueidentifier 資料類型的資料行,設定其「預設值(Default)」為 0,也就是 00000000-0000-0000-0000-000000000000。
可以使用:「字元字串格式」或「二進位格式」。
預期產出的資料值,請參考下圖所示:




以下是使用 SSMS 管理工具的資料表設計介面:

(1) 使用「二進位格式」,輸入:0x,前後需單引號,請參考下圖所示:


或是
(2) 使用「字元字串格式」,輸入: '00000000-0000-0000-0000-000000000000',前後需要有單引號,請參考下圖所示:



請參考以下的程式碼範例:
--EX01. 使用「二進位格式」,設定「預設值」為:0x
USE [Northwind_Dev]
GO
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_UQ01_UID]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[tbuniqueidentifier01] DROP CONSTRAINT [DF_UQ01_UID]
END
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbuniqueidentifier01 ]') AND type in (N'U'))
DROP TABLE [dbo].[tbuniqueidentifier01]
GO
CREATE TABLE [dbo].[tbuniqueidentifier01](
 [EID] [int] NULL,
 [UID] [uniqueidentifier] NULL
) ON [PRIMARY]
GO
-- 使用「二進位格式」,設定「預設值」為:0x
ALTER TABLE [dbo].[tbuniqueidentifier01] ADD  CONSTRAINT [DF_UQ01_UID]  DEFAULT (0x) FOR [UID]
GO

/*==================================================*/
--EX02. 使用「二進位格式」,設定「預設值」為: '00000000-0000-0000-0000-000000000000'
USE [Northwind_Dev]
GO
IF  EXISTS (SELECT * FROM dbo.sysobjects WHERE id = OBJECT_ID(N'[DF_UQ02_UID]') AND type = 'D')
BEGIN
ALTER TABLE [dbo].[tbuniqueidentifier02] DROP CONSTRAINT [DF_UQ02_UID]
END
GO
IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tbuniqueidentifier02]') AND type in (N'U'))
DROP TABLE [dbo].[tbuniqueidentifier02]
GO
CREATE TABLE [dbo].[tbuniqueidentifier02](
 [EID] [int] NULL,
 [UID] [uniqueidentifier] NULL
) ON [PRIMARY]
GO
-- 使用「字元字串格式」,設定「預設值」為: '00000000-0000-0000-0000-000000000000'
ALTER TABLE [dbo].[tbuniqueidentifier02] ADD  CONSTRAINT [DF_UQ02_UID]  DEFAULT ('00000000-0000-0000-0000-000000000000') FOR [UID]
GO


參考資料
使用 Uniqueidentifier 資料
http://msdn.microsoft.com/zh-tw/library/ms190215.aspx

uniqueidentifier (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms187942.aspx

常數 (Transact-SQL)
http://msdn.microsoft.com/zh-tw/library/ms179899.aspx

沒有留言:

張貼留言