内部连接查询给出"无法启用约束"错误

时间:2014-02-26 04:46:51

标签: asp.net sql sql-server

我有这个查询针对2008R2运行。 tblJoin是两个表(tblIncidenttblPatron)之间用于多对多关系的表。

当我在VS2012中构建查询时,在查询生成器窗口中执行查询时,它运行正常,并为我提供了所需的结果。但是在最后一步中,当我单击TestQuery并输入参数时,它会出错:

"Failed to enable constraints.."

我检查了数据类型,它们在表格中相互匹配,

SELECT tblIncident.Inci_ID, 
 _tblJoin.PatronID, 
 _tblJoin.LName, 
 _tblJoin.FName, 
 _tblJoin.MI
FROM tblJoin INNER JOIN
    tblIncident ON tblJoin.InciID = tblIncident.Inci_ID AND tblJoin.InciID = tblIncident.Inci_ID
WHERE (tblIncident.Inci_ID = @Inci_ID)

2 个答案:

答案 0 :(得分:0)

  

您需要检查DataTable中列的所有MaxLength属性。

     

我从“nvarchar(512)”更改为“nvarchar(MAX)”的列在MaxLength属性上仍然具有512值,因此我更改为“-1”并且它正常工作!!。

您可以通过此讨论解决此问题

Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints

有很多答案......

答案 1 :(得分:0)

感谢Ramesh和Vignesh。 Vignesh的评论让我想到了重复的外键。所以我保留了查询,但删除了外键(事件ID),这使它工作。这就是我的查询的样子:

SELECT tblJoin.PatronID, tblJoin.LName, tblJoin.FName, tblJoin.MI FROM tblJoin 
INNER JOIN tblIncident ON tblJoin.InciID = tblIncident.Inci_ID 
WHERE (tblIncident.Inci_ID = @Inci_ID)