Как определить, почему check_constraint не работает?

Мое приложение использует SQL Server 2017, и у меня возникла проблема с запуском простого UPDATE к столу.

Я получаю следующее исключение SQL:

Оператор UPDATE конфликтовал с ограничением CHECK "CK__AGENTS__AGENT_ST__32AB8735"

Я пытаюсь определить, что именно является проверкой, потому что я не помню, чтобы она была настроена для рассматриваемого столбца.

Я попытался выполнить следующий запрос, но definition столбец null:

SELECT
    name,
    type_desc,
    definition
FROM 
    sys.check_constraints;

Колонка простая VARCHAR(10) и оператор SQL, вызывающий ошибку, выглядит так:

UPDATE AGENTS
SET AGENT_STATUS = 'INACTIVE';

Как определить, что на самом деле ищет проверка и почему она не работает?

1 ответ

Я попытался выполнить следующий запрос, но столбец определения пуст:

SELECT
    name,
    type_desc,
    definition
FROM 
    sys.check_constraints;

Ваш код правильный, и он на самом деле получает check constraint определение, но если вы видите NULL вместо этого это означает, что у вас недостаточно permissions видеть check constraint definition,

Вы можете увидеть, какие разрешения у вас есть для этой таблицы, используя этот код:

select *
from sys.fn_my_permissions ('your_table_schema.your_table_name', 'object');

Ты не можешь видеть check constraint определение, если у вас нет VIEW DEFINITION на объекте.

Другие вопросы по тегам