在ANSI SQL中,您可以创建一个带有WHERE子句的唯一索引,该子句将忽略“”值。
有没有办法在Dynamics AX中执行此操作?
为表添加唯一索引,该表只关注索引列包含数据的行?
答案 0 :(得分:3)
我不认为这是可能的,因为Dynamics AX不允许空值:
Microsoft Dynamics AX不支持许多其他数据库管理系统(DBMS)中提供的空值概念。 Microsoft Dynamics AX中的字段始终具有类型和值。
- Null Values for Data Types [AX 2012],MSDN
<强>更新强>
我认为在Dynamics AX中设置“选择性”索引并不可能只对某些值起作用而忽略其他值。为此,您必须直接在SQL数据库中设置索引。当然,数据字典同步会删除这样的索引。您可能可以编写一个sql过程来创建索引并自定义执行同步的代码,以便在每次同步后调用该过程。不过,我建议不要使用这样的解决方案,因为它容易出错,并且会绕过数据字典同步,这是Dynamics AX的核心机制之一。
另一种方法是将您的字段与''值分隔成一个单独的表,如果您有该字段的实际值,则只在该表中创建记录。然后外部将新表与现有表连接。
另一种方法可能是不使用索引,而是编写数据验证程序,检查字段中的非空值是否已经存在。