如何确定为什么check_constraint失败?

时间:2018-07-30 03:03:53

标签: sql-server check-constraints

我的应用程序使用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 个答案:

答案 0 :(得分:0)

  

我尝试运行以下查询,但定义列为   空:

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,否则您将看不到<wsdl:types> <xs:schema> <!-- input schema --> <xs:element name="vs_ss_list" type="vsSsList" /> <xs:element name="vs_ss" type="vsSs" /> <xs:complexType name="vsSsList"> <xs:sequence maxOccurs="unbounded"> <xs:element ref="vs_ss" /> </xs:sequence> </xs:complexType> <xs:complexType name="vsSs"> <xs:sequence> <xs:element name="vs" type="xs:string" /> <xs:element name="ss" type="xs:string" /> </xs:sequence> </xs:complexType> <!-- output schema --> . . . </xs:schema> </wsdl:types> 的定义。