代码之家  ›  专栏  ›  技术社区  ›  Zephyr

如何确定检查约束失败的原因?

  •  0
  • Zephyr  · 技术社区  · 6 年前

    我的应用程序使用了SQL Server 2017,我在运行一个简单的 UPDATE 一张桌子。

    我得到以下SQL异常:

    更新语句与检查约束“ck_u agents_u agent_u st_uuu 32ab8735”冲突。

    我试图确定实际检查是什么,因为我不记得为相关列设置了检查。

    我尝试运行以下查询,但是 definition 列是 null :

    SELECT
        name,
        type_desc,
        definition
    FROM 
        sys.check_constraints;
    

    这个栏目很简单 VARCHAR(10) 导致错误的SQL语句是:

    UPDATE AGENTS
    SET AGENT_STATUS = 'INACTIVE';
    

    我如何确定支票实际上要查找的内容以及失败的原因?

    1 回复  |  直到 6 年前
        1
  •  0
  •   sepupic    6 年前

    我尝试运行以下查询,但定义列是 无效的:

    SELECT
        name,
        type_desc,
        definition
    FROM 
        sys.check_constraints;
    

    YOR代码是正确的,它实际上检索 check constraint 定义,但如果你看到 NULL 这意味着你没有足够的 permissions check constraint definition .

    使用此代码可以查看您在此表上拥有哪些权限:

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

    你看不见 检查约束 定义,除非你有 VIEW DEFINITION 在对象上。