Skip to main content What is Dynamics 365? Guided tours Customer stories Try our products Build your own agents CRM ERP Sales Service Sales Customer Insights Customer Service Contact Center Field Service Supply Chain Management Commerce Finance Project Operations Human Resources Business Central Pricing Business application topics Training & certifications Migrate to the cloud Documentation Events Dynamics 365 Blog Product updates Onboarding and implementation Community Find a partner Software Development Companies Partner resources Microsoft Marketplace Product documentation Technical support On-premises product support Contact us Try for free Sign in
  • 1 min read

Temporary Tables (AX 2012)


Set/Link Data on Temporary Tables (AX 2012) In Ax 2012, the Temporary property on tables was replaced with a new property: TableType, which has three possible values:

  • Regular – a standard physical table
  • InMemory – the type of temporary table which existed in the previous versions of Dynamics Ax.
    Such tables are held in memory and written to a local disk file once they grow beyond a certain point
  • TempDB – a new option in Ax 2012. They are “physical” temporary tables held in the SQL Server database.

The new TempDB tables operate in a similar manner to InMemory tables but support more features from standard physical tables:

  • More powerful joins with physical tables are possible, and are properly supported by the database
  • Can be per-company or global
  • Support for normal tts transactions

To create a new instance link(Populating data/Copying Reference) from one table instance variable to the other with Temporary type tables:

  • For InMemory tables, by using either the setTmpData() method
  • For TempDB tables, the linkPhysicalTableInstance() method replaces the setTmpData() call.

Code Examples:

– Open AOT/Data Dictonaries/Tables

– Create a New table, name it “TestTmp”

– Expand it, create a new field of type string and name it “Id”

1) InMemory:

-Set the “TestTmp”  table “TableType” property to”InMemory”, save

-Create and run following job:

static void TestTmpInMemory(Args _args)

{

TestTmp tmp1, tmp2;
;
tmp1.ID = “1000”;
tmp1.insert();

tmp2.setTmpData(tmp1);

info(“Table type: ” + enum2Str(tmp1.getTableType()));

info(“tmp1 data begin: “);

while select tmp1

info(”    ID ” + tmp1.ID);

info(“tmp1 data end.”);

info(“tmp2 data begin: “);

while select tmp2

info(”    ID ” + tmp2.ID);
info(“tmp2 data end. “);

}

1) TempDB:

-Set the “TestTmp”  table “TableType” property to “TempDB”, save

-Create and run following job:

static void TestTmpTempDB(Args _args)

{

TestTmp tmp1, tmp2;
;

tmp1.ID = “1000”;

tmp1.insert();

tmp2.linkPhysicalTableInstance(tmp1);
info(“Table type: ” + enum2Str(tmp1.getTableType()));
info(“tmp1 data begin: “);

while select tmp1
info(”    ID ” + tmp1.ID);
info(“tmp1 data end.”);
info(“tmp2 data begin: “);

while select tmp2
info(”    ID ” + tmp2.ID);
info(“tmp2 data end. “);

}

Get started with Dynamics 365

Drive more efficiency, reduce costs, and create a hyperconnected business that links people, data, and processes across your organization—enabling every team to quickly adapt and innovate.