在 SQL Server 2000/2005 上,可以建立唯一(UNIQUE)的條件約束來確保資料不會重複。
但是卻有以下的限制:SQL Server 2005 為所有索引鍵資料行的總大小保留 900 個位元組的上限。
參考網址:索引鍵的大小上限
因此,當資料長度超過 900 位元組時,將無法使用唯一(UNIQUE)的限制條件。
或許可以嘗試以下的方式來解決此問題:
USE Northwind GO -- cdata 資料行的長度超過 900 byte。 CREATE TABLE coluqMax (sid int, cdata char(901)) GO -- 建立失敗 CREATE UNIQUE INDEX ixuq01 ON coluqMax(cdata) GO /* 訊息 1944,層級 16,狀態 1,行 1 並未建立索引 'ixuq01'。這個索引中有一索引鍵的長度至少為 901 個位元組。允許的最大索引鍵長度為 900 個位元組。 */ -- 多增加一個 Computed checksum Column CREATE TABLE coluqMax01 (sid int, cdata char(901), chksum AS BINARY_CHECKSUM(cdata)) GO CREATE UNIQUE INDEX ixuq01 ON coluqMax01(chksum) GO -- 新增資料 INSERT coluqMax01 VALUES(1,'A') INSERT coluqMax01 VALUES(2,'B') INSERT coluqMax01 VALUES(3,'A') /* 訊息 2601,層級 14,狀態 1,行 1 無法以唯一索引 'ixuq01' 在物件 'dbo.coluqMax01' 中插入重複的索引鍵資料列。 陳述式已經結束。 */
沒有留言:
張貼留言