Внешний ключ от UNIONed View

У меня есть представление, которое выглядит так:

CREATE view reference.Test WITH SCHEMABINDING as SELECT reference.HighlevelTestId as TestId, Name, IsActive, cast(1 as bit) as IsHighLevelTest FROM reference.HighlevelTest UNION ALL SELECT LowLevelTestId as TestId, Name, IsActive, cast(0 as bit) as IsHighLevelTest FROM reference.LowLevelTest GO 

ПРИМЕЧАНИЕ. У HighLevelTestId и LowLevelTestId гарантированно никогда не будет одинаковых значений (без конфликтов).

У меня есть другая таблица, которая выглядит так:

 CREATE TABLE [Reference].[TestAddition]( [TestId] [BigInt] NOT NULL, [OtherStuff] [bit] NOT NULL, .... ) 

Мне бы очень хотелось, чтобы FK моя таблица TestAddition в Test представлении в столбце TestId (для ссылочной целостности и простоты использования с OData).

Есть ли способ сделать это?

Внешние ключи нельзя применять к представлениям. Получите это с помощью этого угла: вы не можете применять ссылочную целостность к результатам, которые просто возвращаются SELECT , потому что они не хранятся на постоянной основе, они всего лишь ненастоящий вывод запроса.

Чтобы управлять ссылочной целостностью, применяйте внешние ключи или другие такие ограничения к данным, пока вы их постоянно сохраняете – например, в вашем случае в таблицах IsHighLevelTest и IsLowLevelTest . Или сделайте результат своего UNION постоянным, сохранив его в таблице. Существует больше способов.

  • Есть ли способ обеспечить, чтобы содержимое поля было либо NULL, либо UNIQUE
  • Передача временной таблицы из одного исполнения в другое
  • tSQL Trigger Logic, лучше иметь предложение IF или предложение IN?
  • SQL Server 2012: как найти общие значения в столбце
  • присоединиться к сводной таблице
  • Выполнить файл .SQL в Powershell без установки SQL Server?
  • Общие сведения об аудите SQL Server и файле журнала .sqlaudit
  • Хранимая процедура SQL Server с пустым телом
  • Запросить все данные таблицы и индекса
  • Функция SQL Prime number
  • Последовательности Microsoft SQL Server
  • Interesting Posts

    Восстановление обратно sql-сервера – сбой входа в систему

    Индекс SQL Drop для разных баз данных

    Нумерация Дублированные имена в разделенной запятой строке

    Преобразование одного сценария SQLSERVER 2005 в сценарий SQL SERVER 2000

    Как удалить время из DateTime при извлечении из базы данных с помощью хранимой процедуры

    Создание триггера SQL (вставка или обновление), который будет принимать данные из одной таблицы и будет помещен в другую таблицу базы данных

    получить случайные верхние n строк, где n больше количества строк в таблице

    Запрос PIVOT дает значения NULL

    Несколько внешних ключей и Cascade Delete SQL Server

    Обеспечение SProc не возвращает слишком много данных

    SQL Group: как получить% записей по определенному счету

    Как преобразовать int в байтовый массив?

    SQLServer Выберите, что объединяет и возвращает результаты, в которых несколько записей объединения соответствуют значениям

    подключение к серверу sql от доступа

    Использование таблицы для поиска нескольких идентификаторов в одной строке

    Давайте будем гением компьютера.