проверка ограничений на значения внешнего ключа

У меня эти две таблицы

Таблица: Guards

  • ID int
  • Имя varchar
  • Ранг int

Таблица: Squads

  • SquadId
  • лидер
  • SquadName

Столбец « Leader указывает на столбец « ID в таблице « Guard и я пытаюсь создать ограничение, которое проверяет, является ли столбец « Rank связанным с защитным идентификатором, предоставленным в качестве лидера, конкретным значением (в данном случае 1)

Возможно ли это, или я должен использовать триггер?

Вам нужно добавить ограничение CHECK . Я бы привязал ограничение к функции, так как вам нужно проверить значение другой таблицы.

 CREATE FUNCTION CheckLeaderRank (@LeaderID INTEGER) RETURNS INTEGER AS BEGIN DECLARE @value INTEGER; DECLARE @MinimumRank INTEGER = 3; SET @value = CASE WHEN (SELECT RANK FROM Guards WITH(NOLOCK) WHERE Id = @LeaderID) >= @MinimumRank THEN 1 ELSE 0 END RETURN @value END 

Функция проверяет, достаточно ли Rank стража: убедитесь, что @MinimumRank настроен на правильное значение или, что еще лучше, извлечь его из другой таблицы.

Теперь добавьте ограничение в таблицу Squads .

 ALTER TABLE Squads ADD CONSTRAINT chk_rank CHECK (dbo.CheckLeaderRank(i) = 1) 
  • Способ добавления ограничения между двумя доменами в таблице без использования триггера?
  • Могу ли я иметь составные ограничения?
  • Как вы удаляете столбец с неопределенным значением ограничения по умолчанию и неизвестными индексами
  • Добавить контрольные ограничения в SQL Server: ADD CONSTRAINT vs ADD CHECK
  • Что такое ограничения базы данных?
  • SQL Server: проверить ограничение
  • Как указать столбец, который будет уникальным в области отношений в SQL Server 2008?
  • SQL Server: значения в двух столбцах должны быть монотонными
  • Запрос, чтобы найти все ограничения FK и их правила удаления (SQL Server)
  • Получить список ограничений SQL Server без избыточности
  • Удалите или измените ограничение первичного ключа на ограничение UNIQUE с помощью SQL Server 2008
  • Interesting Posts

    Создать столбец с условием if на сервере SQL

    SQL Server – порядок

    Связанный сервер SQL Server 2005 с проблемой производительности DB2

    Запрос с LINQ, где Контекст соответствует нескольким параметрам из списка объектов

    Где я могу найти ресурсы для настройки приложения Silverlight, которое обращается к SQL Server SQL Express Express?

    SQL DATETIME Math

    Процедура MSSQL для вставки нескольких значений вместо одного значения

    Преобразование результатов поиска в сценарий вставки

    Количество записей превысило максимальное целое значение

    Откройте базы данных с SQL Server, как вы это делаете с MySQL с PhpMyAdmin

    Что действительно делает метод Statement.setFetchSize (nSize) в драйвере JDBC SQL Server?

    Параметр для фильтрации результатов запроса

    Разделение полного имени на имя и фамилию

    Обновление нескольких строк с 2 параметрами в 1 столбце на сервере sql

    MSSQL 2008 SP разбиение на страницы и подсчет количества записей

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