2017-10-11 71 views
1

我寫一個圖書館數據庫,並具有下列表格:SQL約束防止圖書被借出兩次

複製(書冊)

Id int 
ISBN nvarchar(13) 
Purchase_Date datetime 

客戶

Id int 
First_Name nvarchar(255) 
Last_Name nvarchar(255) 
Address nvarchar(255) 
Membership_Joined_Date datetime 
Membership_Expiry_Date datetime 

貸款

Id int 
CopyId int 
CustomerId int 
Loan_Date datetime 
Loan_Expiry_Date datetime 
Extension_Date datetime (nullable) 
Return_Date datetime (nullable) 

copyId和customerId字段分別來自Copy和Customer表中的外鍵。

有沒有一種表達方式可以寫在貸款表上,防止我借兩次同一本書?我在貸款表中使用一個空的Return_Date來檢查一本書是否已經借出。任何幫助讚賞。

+0

用您正在使用的數據庫標記您的問題。 –

+0

完成@GordonLinoff – DevDave

回答

1

許多數據庫(包括SQL Server)都支持篩選索引。您可以創建一個已過濾的唯一索引:

create unique index unq_loan_copyid 
    on loan(copyid) where Loan_Expiry_Date is null; 
+0

謝謝戈登:) – DevDave