在做一些报表的时候,我们常常用到临时表用来存储一些临时数据,以前版本的AX只使用客户端内存保存临时表数据,SELECT的时候不能连接其他表,有很多的不方便,AX2012增加了TempDB类型的临时表,和In-Memory的临时表相比有以下特点:
- 它是利用了SQL数据库的临时表,数据存储在服务器的数据库中,所以可以用在X++的SELECT JOIN中
- 可以设置为分公司的还是全局的(SaveDataPerComapny属性)
- 可以用在.Net Bussiness connector中
- 可以有外键字段,但是其他表不能使用它的主键做外键
- 可以有索引
- 可以有方法但是不能重载
- 可以用在Query中
- 支持数据库事务
- 没有Configuration key。
它也有一些限制:
- 不能是有效时间状态的表(Valid time sate table)
- 不能有delete actions
- 不支持纪录级权限
- 不能使用Table browser浏览数据
- 不能包含在表集(table collection)
- 不能用在View中
在AOT中设置一个表的TableType为TempDB就创建了一个TempDB的临时表,表在第一次增删改的SQL操作时创建,释放有几种情况:
- 表变量在X++作用域外
- AOS重启
- 数据库重启
- 客户端关闭,释放客户端初始化的临时表
- 在Online users中终止用户会话
临时表的其他操作和正常表类似,不再赘述,更多内容参见MSDN:http://msdn.microsoft.com/en-us/library/gg845661.aspx