У меня есть таблица X в SQL Server, которая включает столбец с именем Type varchar(10)
с 15 потенциальными значениями: AAA, BBB1, BBB2, CCC, ...
и другой столбец с именем IfExists bit
.
В одной и той же БД у меня есть 15 различных представлений, представление для каждого Type
, включая X_ID
. Примеры имен представлений:
View_ReportingAAA
View_ReportingBBB1
View_ReportingBBB2
View_ReportingCCC
....
Обычно я смотрю Type
записи, используя X_ID
, предоставленный мне в Table X
, и использую запрос на выборку для связанного представления, чтобы получить некоторые данные.
Теперь мне нужно создать триггер для Table X
, чтобы установить 1 для значения поля IfExists
, если в связанном представлении есть запись для идентификатора записи X_ID
.
Мой вопрос: Каков наилучший способ найти и использовать имя связанного представления для этой цели, используя значение поля в основной таблице?
Я использую код ниже для этого, но я не уверен, что это самый эффективный способ справиться с этим. Буду признателен за любую помощь или совет.
declare @ifExists int = 0;
declare @sql nvarchar(max) = 'set @ifExists = (Select count(*) from View_Reporting';
declare @tablename nvarchar(max) = (Select Type from X where X_ID = @X_ID)
set @sql = @sql + @tablename + ' where V_xid = @X_ID)';
EXECUTE sp_executesql @sql
if (@ifExists > 0)
begin
update X set IfExists = 1 where X_ID = @X_ID
end