跨表创建唯一索引?

时间:2018-01-24 10:59:06

标签: sql-server sql-server-2012 unique-index

假设我有以下

table a
serial_no varchar(8)  
serialised bit

table b:
serial_no varchar(8) (foreign key)
return_date datetime null

如果表a中的序列化字段为真,我是否可以创建一个不允许serial_no和null return_date重复记录的唯一索引。

类似的东西:

create unique index unq_loan_serial_id
    on table b(serial_no) where return_date is null and table a.serialised = 1

关于我如何做到这一点的任何想法?感谢

1 个答案:

答案 0 :(得分:2)

您不能将此直接应用于表格 - 但您可以创建索引视图。

类似的东西:

CREATE VIEW dbo.b_serialised --Guessing everything in dbo schema
WITH SCHEMABINDING
AS
  SELECT
    b.Serial_No
  FROM
     dbo.a
       inner join
     dbo.b
       on
          a.Serial_No = b.Serial_No --Guessing this was the implied join
  WHERE
    b.return_date is null and
    a.serialised = 1

其次是

create unique clustered index UQ_b_serialised on b_serialised (Serial_No)