【问题标题】:SQL Constraint Prevent Book From Being Loaned TwiceSQL 约束防止书籍被两次借出
【发布时间】:2017-10-11 11:58:50
【问题描述】:

我正在编写一个图书馆数据库并有以下表格:

副本(书籍的副本)

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 表的外键。

我是否可以针对外借表写一个表达式来阻止我两次借出同一本书?我在 Loan 表中使用 null Return_Date 来检查一本书是否已经被借出。任何帮助表示赞赏。

【问题讨论】:

    标签: sql sql-server sql-server-2012 constraints


    【解决方案1】:

    许多数据库(包括 SQL Server)都支持过滤索引。您可以创建过滤的唯一索引:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-23
      • 2019-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多