Table inheritance implementation changed

在AX 2012 R2我们会发现有些table是在AOT里的,但是不存在实际的SQL Database.

例如:CompanyInfo table.

最终通过Extends property,可以发现CompanyInfo table 继承的是DirPartyTable.

1. 为了研究清楚table
inheritance是如何工作的,我们可以从一个小小的query开始。
     CompanyInfo
comp;
     select generateOnly
forceLiterals comp;
    
info(comp.getSQLStatement());

我们可以得到T-SQL code:

SELECT * FROM DIRPARTYTABLE T1

    WHERE ((T1.PARTITION=5637144576) AND (T1.INSTANCERELATIONTYPE IN (41) ))

很显然,查询时比以前的版本简单得多,但可能不是那么清楚它是如何工作的。

你可能会吃惊的是,该查询不使用任何表,仅仅是DirPartyTable。如果我列出了所有的fields,你可以发现在子表里定义的字段也是直接放在数据库里的DirPartyTable。

但是如果所有的字段都在DirPartyTable,那子表(例OMInternalOrganization and CompanyInfo)的目的是什么?
答案是:子表真的不需要存在数据库那里,它们只存在于应用层作为独立的对象。

2. 我们可以从T-SQL里看到AX里包含了哪些必须的子表。

WHERE ((T1.PARTITION=5637144576) AND (T1.INSTANCERELATIONTYPE IN (41) ))

Partition是AX 2012 R2的另一个新的feature,但是不影响table inheritance.
所以我们可以忽略它。重要的是InstanceRelationType,用来过滤记录的类型。

Values in InstanceRelationType represents table IDs:














2376

OMInternalOrganization

41

CompanyInfo

2377

OMOperatingUnit

5329

OMTeam

所有未在父表中定义的字段只make sense for specific types of records. 如果一个字段不存在一个特定的subtype,
那么它的value将会是NULL。

虽然table inheritance在AX里看起来是一样的实现方式,但是在数据库中有了显著的变化。

注意:

- 不要忽视 generateOnly keyword, 否则
getSQLStatement()将会返回一个空的字符串

- avoid 复杂的继承,avoid too may tables joining

Table inheritance implementation changed,布布扣,bubuko.com

时间: 2024-11-25 15:34:06

Table inheritance implementation changed的相关文章

SQLException Table definition has changed, please retry transaction

近日,一开发说只要切换到mysql,执行到某一条查询就会发生SQLException Table definition has changed, please retry transaction,oracle就不会.换成另外一个mapper也不会有问题.同时select * from innodb_trx可以看出连接未释放(至于连接未释放,是因为commit的时候没有指定参数true,这依赖于mysql的默认行为).经查,之所以出现该错,是因为mapper默认使用REUSE执行器,它导致了语句缓

UI5 control inheritance implementation question

C同事问了我这个问题. 使用下列这段代码extend UI5标准的控件. 问题1:为什么new 一个JerryButton时,line 35会触发? var oJerryButton = new JerryButton({ application: oApplication } ); 答案: debug extend的实现, 在line 330里把调用extend指定的constructor赋给fnClass 然后在line 352把fnClass赋给fnClass.prototype.cons

Table Properties [AX 2012]

Table Properties [AX 2012] 1 out of 2 rated this helpful - Rate this topic Updated: July 20, 2012 Applies To: Microsoft Dynamics AX 2012 R2, Microsoft Dynamics AX 2012 Feature Pack, Microsoft Dynamics AX 2012 This topic describes the properties that

Oracle Flashback(flashback table或drop)

在Oracle 10g中,Flash back家族分为以下成员:Flashback DatabaseFlashback DropFlashback TableFlashback Query(分Flashback Query,Flashback Version Query,Flashback Transaction Query)下面介绍一下Flashback Drop 和Flashback Table 一 Flashback设置 1.打开flashback: 关闭数据库 启动到mount方式 SQ

HashMap与TreeMap源码分析

1. 引言     在红黑树--算法导论(15)中学习了红黑树的原理.本来打算自己来试着实现一下,然而在看了JDK(1.8.0)TreeMap的源码后恍然发现原来它就是利用红黑树实现的(很惭愧学了Java这么久,也写过一些小项目,也使用过TreeMap无数次,但到现在才明白它的实现原理).因此本着"不要重复造轮子"的思想,就用这篇博客来记录分析TreeMap源码的过程,也顺便瞅一瞅HashMap. 2. 继承结构 (1) 继承结构 下面是HashMap与TreeMap的继承结构: pu

open_table

/* Open a table. SYNOPSIS open_table() thd Thread context. table_list Open first table in list. action INOUT Pointer to variable of enum_open_table_action type which will be set according to action which is required to remedy problem appeared during

开源数据库选型

一: 关系型数据库发展现状 在 DB-Engines 的排名上,Oracle 和 MySQL 两个产品长期霸占了前两名的位置,在最新的排名数据上(2017年6月),Oracle和MySQL分列第一和第二位,Microsoft SQL Server一直是唯一具有追随潜质的产品: 针对排名前三的开源数据库:MySQL.PostgreSQL.MongoDB,受欢迎程度趋势如下: 从趋势上看,MySQL 在开源数据库受欢迎程度榜单上稳居第一: 2014年以来,PostgreSQL.MongoDB呈持续增

Application binary interface and method of interfacing binary application program to digital computer

An application binary interface includes linkage structures for interfacing a binary application program to a digital computer. A function in a relocatable shared object module obtains the absolute address of a Global Offset Table (GOT) in the module

Enhancing the Scalability of Memcached

原文地址: https://software.intel.com/en-us/articles/enhancing-the-scalability-of-memcached-0 1 Introduction - Memcached and Web Services Memcached is a Key-Value cache used by cloud and web service delivery companies, such as Facebook [1], Twitter [2], R