我有一個表PK = BookId和另一個非鍵 - 書名。 我可以確保用戶不會在數據庫級別將相同的書籍再次添加到數據庫中。或者我必須在應用程序級別執行此操作嗎?我如何確保相同的值不被插入到數據庫中?
請指教。
我有一個表PK = BookId和另一個非鍵 - 書名。 我可以確保用戶不會在數據庫級別將相同的書籍再次添加到數據庫中。或者我必須在應用程序級別執行此操作嗎?我如何確保相同的值不被插入到數據庫中?
請指教。
您可以使用Unique Index
CREATE UNIQUE NONCLUSTERED INDEX <idx_name> ON <table_name> (column1, column2)
假設你的表稱爲書籍,你可以使用
CREATE UNIQUE NONCLUSTERED INDEX IDX_IdAndName_Unique ON [dbo].[Books] (BookId, BookName)
我更願意將其添加爲不是唯一索引的約束,即使它們是幕後實施了同樣的措施。約束正確地意味着意圖(防止重複),而索引意味着許多它是出於性能原因而創建的。
ALTER TABLE dbo.Books ADD CONSTRAINT UQ_BookName
UNIQUE (BookName);
謝謝先生!效果很好 ! – YourDataInsecure
這不會阻止'BookName'的重複值,除非'BookID'恰好相同(這是不可能的,因爲'BookID'已經是主鍵)。 –