星期六, 9月 01, 2018

[SQL] 篩選索引 - 條件唯一

公司感應卡是離職後繳回,感應卡沒有故障的話,後續到職員工可以繼續使用,隨著時間增加,員工感應卡資料內會有一張感應卡出現在多位員工使用過的資料,但可以肯定的是,現職員工使用感應卡,一定是唯一的,要避免 AP 端沒有寫好,產生出勤資料異常,因此透過篩選索引來設定資料唯一

卡片會重覆使用,所以無法建立唯一索引
CREATE UNIQUE INDEX IX_EmployCard_Filter ON EmployCard (CardNO)
發現物件名稱 'dbo.EmployCard' 和索引名稱 'IX_EmployCard_Filter' 的重複索引鍵,CREATE UNIQUE INDEX 陳述式已結束。重複的索引鍵值為 (0005023090)。
建立 Filter Index,員工手邊正在使用的卡片必須是唯一
CREATE UNIQUE INDEX IX_EmployCard_Filter ON EmployCard (CardNO)
WHERE [Out] = 0
故意輸入違反唯一
INSERT INTO EmployCard (EmpNO , CardNO , [Out])
    VALUES('09702' , '0005117122' , 0)
無法以唯一索引 'IX_EmployCard_Filter' 在物件 'dbo.EmployCard' 中插入重複的索引鍵資料列。重複的索引鍵值是 (0005117122)。

沒有留言:

張貼留言