Создать уникальный индекс по таблицам?
Предположим, у меня есть следующее
table a
serial_no varchar(8)
serialised bit
table b:
serial_no varchar(8) (foreign key)
return_date datetime null
Могу ли я создать уникальный индекс, который не допускает повторяющихся записей по serial_no и нулевой return_date, ТОЛЬКО ЕСЛИ сериализованное поле из таблицы a имеет значение true.
Что-то вроде:
create unique index unq_loan_serial_id
on table b(serial_no) where return_date is null and table a.serialised = 1
Любые идеи о том, как я могу это сделать? Спасибо
1 ответ
Решение
Вы не можете применить это непосредственно к таблице - но вы можете создать индексированное представление.
Что-то вроде:
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)