如何将DeleteActions用于1:n表关系?
例子:
Table A ("id")
('foo')
,('bar')
,('blup')
Table B: ("id", "tableAId1", "tableAId2")
(1, 'foo', 'blup')
,(2, 'bar', 'foo')
我在tableB上有两个关系:
TableB:tableAId1 -> TableA:id
TableB:tableAId2 -> TableA:id
如果删除了表A中的“ foo”,则应删除表B中的两个数据集。
我对表A尝试了一个delete-Action,并使用层叠选项引用了表B,导致仅删除了表B中的数据集1。
我在表A上尝试了两个相同的delete-Action,并使用cascade-option引用了表B,导致数据库上的表锁定。
我知道关于delete()
表A的覆盖方法,但是如果使用,这是不安全的tableA.doDelete()
。
在AX 2009及更早版本中,对表的删除操作仅遵循一种关系(第一个按字母顺序排序)。一个表仅应作为删除操作应用一次。
然后,最好的选择是使用主表delete_from
中的delete
方法进行自己的级联删除。如果执行doDelete
,则不会删除子记录。然后就是不要使用该doDelete
方法!
在AX 2012中,您明确指定要执行删除操作的关系。如果指定了不同的关系,则可以多次应用同一张表。
这是一个不错的功能,但这是扩展数据类型上的表关系必须终止的原因之一。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句