我第一次尝试使用带连接和函数的查询在VS2010 DataSet Designer中创建DataSet / TableAdapter; NVL()。通常,我只使用单个数据库表,将它们从服务器资源管理器拖到设计器工作区。 在这种情况下,我右键单击并添加了TableAdapter并输入以下查询:
SELECT a.primary_key, NVL(a.message, b.subject) as subject
FROM TableA a, TableB b
WHERE a.primary_key = b.primary_key (+)
AND (a.time_stamp BETWEEN :time_start AND :time_end);
DataTable是使用适当的列创建的。问题是,当尝试在TableAdapter上执行查询时,我收到错误:
Failed to enable constraints. One or more rows contain values violating non-null, unique, or foreign-key constraints.
我没有在各列的属性中看到任何异常。我错过了什么?
谢谢!
答案 0 :(得分:2)
很可能是左外连接而且缺少FROM子句。
上次没有为b返回行时发生这些事情,但是很久以前,我甚至忘记了旧的连接语法...在查询分析器或ssms中运行查询并告诉我们:)
以及此查询:
select count(1) from tableB where primary_key not in (select primary_key from tableA)
答案 1 :(得分:0)
请务必将 DataSet 级别的“EnforceConstraints”属性设置为“false”。