使用 1:n DeleteActions
Use 1:n DeleteActions
如何为 1:n table 关系使用 DeleteActions?
示例:
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
如果删除 table A 中的 'foo',则应删除 table B 中的两个数据集。
我在 table A 上尝试了一个删除操作,引用带有级联选项的 table B,导致 只有数据集 1 在 table B被删除了。
我在 table A 上尝试了两个相同的删除操作,引用带有级联选项的 table B,导致 table 锁定数据库。
我知道在 table A 上覆盖 delete()
方法,但是如果使用 tableA.doDelete()
.
则不安全
在 AX 2009 和以前的版本中,对 table 的删除操作仅遵循其中一个关系(第一个按字母顺序排序)。 table 只能作为删除操作应用一次。
你最好的选择是使用你的主人 table 的 delete
方法中的 delete_from
进行你自己的级联删除。如果您执行 doDelete
,它不会删除子记录。那么就不要使用 doDelete
方法!
在 AX 2012 中,您可以明确指定删除操作要遵循的关系。如果您指定不同的关系,您可以多次应用相同的 table。
这是一个不错的功能,但也是 table 扩展数据类型上的关系不得不消亡的原因之一。
如何为 1:n table 关系使用 DeleteActions?
示例:
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
如果删除 table A 中的 'foo',则应删除 table B 中的两个数据集。
我在 table A 上尝试了一个删除操作,引用带有级联选项的 table B,导致 只有数据集 1 在 table B被删除了。
我在 table A 上尝试了两个相同的删除操作,引用带有级联选项的 table B,导致 table 锁定数据库。
我知道在 table A 上覆盖 delete()
方法,但是如果使用 tableA.doDelete()
.
在 AX 2009 和以前的版本中,对 table 的删除操作仅遵循其中一个关系(第一个按字母顺序排序)。 table 只能作为删除操作应用一次。
你最好的选择是使用你的主人 table 的 delete
方法中的 delete_from
进行你自己的级联删除。如果您执行 doDelete
,它不会删除子记录。那么就不要使用 doDelete
方法!
在 AX 2012 中,您可以明确指定删除操作要遵循的关系。如果您指定不同的关系,您可以多次应用相同的 table。
这是一个不错的功能,但也是 table 扩展数据类型上的关系不得不消亡的原因之一。