3

我正在学习 X++,我有 2 个问题:

没看懂有什么用ttsbegin and ttscommit!我必须在哪里使用它,实用程序是什么?

X++ 标准:ttsBegin 和 ttsCommit AX 2012

这个运算符“~”有什么用处?

4

2 回答 2

8

文档中:

ttsBegin: 标记事务的开始。这确保了数据完整性,并保证在事务结束之前执行的所有更新(通过ttsCommitttsAbort)是一致的(全部或无)。

ttsCommit: 标志着一个事务的成功结束。这结束并提交事务。MorphX 保证提交的事务将根据意图执行。

注意

通常最好使用异常处理而不是ttsAbort. throw 语句自动中止当前事务。

这意味着您将开始一个事务ttsBegin并结束它ttsCommit(如果成功)或抛出异常(如果事务不成功)。从文档中不清楚,但事务意味着对应用程序表的操作。

当您希望确保对应用程序表的读取或更新操作不会因同时发生的其他表操作而不一致时,您将使用它们

请参阅同一链接中的示例。

~运算符不是按位运算,即翻转整数中的每个位。例如,(假设 32 位整数):~0is FFFFFFFF(每个位现在为 1),~4is FFFFFFFB(十六进制表示)。

于 2012-05-23T15:04:40.203 回答
1

当您访问表中的数据时使用 ttsbegin,它会通知系统到数据库的事务将发生。
当您在一行中更新/保存数据时,您必须调用 ttscommit 否则更改将恢复为原始值,类似于在 C#/VB 中使用数据集时,您必须告诉数据集提交所有更改到数据库。

ttsbegin 类似于 BEGIN SQL 语句,而 ttscommit 类似于 COMMIT SQL 语句。

你必须一起使用它们:
ttsbegin;
'在此处添加代码以检索数据和操作数据'
ttscommit;

您大声嵌套 ttsbegins 和 ttscommits,但要小心多次使用上述内容,因为不关闭一个 ttsbegin 可能会搞砸很多事情,我发现调用 ttsbegin 和 ttscommit 一次就足够了。

至于“~”,我在为 Axapta(Microsoft Dynamics AX)编写 X++ 的 2 年中从未使用过它。

于 2012-05-23T14:57:06.773 回答