本节提供有关
NdbTransaction
该类的信息。
- 家长班
没有任何
- 儿童班
没有任何
- 描述
事务在 NDB API 中由一个
NdbTransaction
对象表示,该对象属于一个Ndb
对象并使用Ndb::startTransaction()
. 事务由NdbOperation
类或其子类之一( 、 或 )NdbScanOperation
表示NdbIndexOperation
的 一系列操作组成NdbIndexScanOperation
。每个操作只访问一个表。- 方法
-
下表列出了该类的公共方法以及每个方法的用途或用途:
表 2.65 NdbTransaction 类方法和说明
方法
readTuple()
,insertTuple()
,updateTuple()
,writeTuple()
,deleteTuple()
,scanTable()
和scanIndex()
需要使用NdbRecord
。 - 类型
-
NdbTransaction
定义了 2 个公共类型,如下表所示:
使用交易。
获取NdbTransaction
对象后,使用如下:
-
使用以下任何一种方法将操作分配给事务:
getNdbOperation()
getNdbScanOperation()
getNdbIndexOperation()
getNdbIndexScanOperation()
调用这些方法之一定义操作。可以在同一个
NdbTransaction
对象上定义多个操作,在这种情况下它们是并行执行的。定义完所有操作后,该execute()
方法将它们发送到NDB
内核执行。 -
当内核完成所有先前定义的操作的执行 时, 该
execute()
方法返回。NDB
在调用该 方法 之前, 应正确定义所有分配的操作 。
execute()
-
execute()
以此处列出的三种模式之一运行:NdbTransaction::NoCommit
:执行操作而不提交它们。NdbTransaction::Commit
:执行任何剩余的操作,然后提交完整的事务。NdbTransaction::Rollback
:回滚整个事务。
execute()
还配备了一个额外的错误处理参数,它提供了此处列出的两个备选方案:NdbOperation::AbortOnError
:任何错误都会导致事务中止。这是默认行为。NdbOperation::AO_IgnoreError
:即使为该事务定义的一个或多个操作失败,事务也会继续执行。
- 描述
-
此方法关闭事务。相当于调用
Ndb::closeTransaction()
.如果事务尚未提交,调用此方法时将中止事务。请参阅 Ndb::startTransaction()。
- 签名
void close ( void )
- 参数
没有。
- 返回值
没有。
- 描述
此方法获取事务的提交状态。
- 签名
CommitStatusType commitStatus ( void )
- 参数
没有。
- 返回值
事务的提交状态,类型的值
CommitStatusType
。
- 描述
使用删除一个元组
NdbRecord
。- 签名
const NdbOperation* deleteTuple ( const NdbRecord* key_rec, const char* key_row, const NdbRecord* result_rec, char* result_row, const unsigned char* result_mask = 0, const NdbOperation::OperationOptions* opts = 0, Uint32 sizeOfOptions = 0 )
- 参数
-
此方法采用以下参数:
key_rec
是指向NdbRecord
表或索引的指针。如果在表上,则删除操作使用主键;如果在索引上,则操作使用唯一键。无论哪种情况,都key_rec
必须包括键的所有列。传递给此方法的
key_row
定义要删除的元组的主键或唯一键,并且在execute()
调用之前必须保持有效。result_rec
是NdbRecord
要使用 的。如果不返回任何属性,则可以
result_row
。NULL
如果
result_mask
不是NULL
,则定义要读取并返回给客户端的属性子集。掩码被复制,因此在调用此方法返回后不需要保持有效。OperationOptions
(opts
) 可用于提供更细粒度的操作定义控制。传递的OperationOptions
结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;对于每种类型的操作支持的选项,请参阅 NdbTransaction::readTuple()。可选
sizeOfOptions
参数提供此接口与以前的OperationOptions
结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的OperationOptions
结构。要启用此功能,调用者应传递sizeof(NdbOperation::OperationOptions)
此参数的值。
- 返回值
const
指向NdbOperation
表示此写操作 的指针。如有必要,可以检查操作是否有错误。
本节提供有关
ExecType
数据类型的信息。
- 描述
该类型设置交易的执行类型;也就是说,它是应该执行、执行并提交还是中止。它用作方法的参数
execute()
。(参见 NdbTransaction::execute()。)- 枚举值
-
下表显示了可能的值以及说明:
表 2.68 NdbTransaction::ExecType 值和描述
姓名 描述 NoCommit
事务应该执行,但不提交。 Commit
事务应该执行并提交。 Rollback
事务应该被回滚。
- 描述
此方法用于执行事务。
- 签名
int execute ( ExecType execType, NdbOperation::AbortOption abortOption = NdbOperation::DefaultAbortOption, int force = 0 )
- 参数
-
该
execute()
方法采用此处列出的三个参数:执行类型(
ExecType
值);有关更多信息和可能的值, 请参阅NdbTransaction::ExecType 。-
中止选项(
NdbOperation::AbortOption
值)。发现由此方法产生的错误
NdbOperation::getNdbError()
而不是NdbTransaction::getNdbError()
。 -
一个
force
参数,它确定何时应将操作发送到NDB
内核。它采用此处列出的值之一:0
:非强制;由自适应发送算法检测到。1
:被迫;由自适应发送算法检测到。2
:非强制;自适应发送算法未检测到。
有关详细信息,请参见第 1.4.4 节“自适应发送算法”。
- 返回值
返回
0
成功或-1
失败。事务没有中止的事实并不一定意味着每个操作都成功;您必须单独检查每个操作是否有错误。
当且仅当 事务被中止时, 此方法才会报告失败。在这种情况下设置事务的错误信息以反映实际的错误代码和类别。
在可能出现NoDataFound错误 的情况下,您必须明确检查它,如本例所示:
Ndb_cluster_connection myConnection;
if( myConnection.connect(4, 5, 1) )
{
cout << "Unable to connect to cluster within 30 secs." << endl;
exit(-1);
}
Ndb myNdb(&myConnection, "test");
// define operations...
myTransaction = myNdb->startTransaction();
if(myTransaction->getNdbError().classification == NdbError:NoDataFound)
{
cout << "No records found." << endl;
// ...
}
myNdb->closeTransaction(myTransaction);
您应该知道,成功的execute()
调用只能保证扫描请求已被组装并无误地发送给事务协调器;在返回之前,它不会等待数据节点发送任何信号作为回复。
- 描述
如果还有任何尚未执行的给定类型的 blob 部分操作, 此方法将执行
ExecType
等于的事务。NoCommit
- 签名
int executePendingBlobOps ( Uint8 flags = 0xFF )
- 参数
flags
参数是按位的结果 ,OR
等于,其中 是 。默认对应于 .1 <<
optype
optype
NdbOperation::Type
NdbOperation::Type::PrimaryKeyAccess
- 返回值
返回
0
成功或-1
失败。事务没有中止的事实并不一定意味着每个操作都成功;您必须单独检查每个操作是否有错误。
- 描述
-
此方法检索事务的全局检查点 ID (GCI)。
每个提交的事务都属于一个 GCI。发生全局检查点时,已提交事务的日志将保存在磁盘上。
通过将事务的 GCI 与重新启动的 NDB Cluster 中恢复的最新 GCI 的值进行比较,您可以确定事务是否已恢复。
该方法无法判断带有该GCI的全局检查点是否已经保存在磁盘上。
扫描事务的 GCI 未定义,因为在扫描事务中不执行任何更新。
execute()
在使用调用 之前,GCI 不可 用ExecType::Commit
。 - 签名
int getGCI ( void )
- 参数
没有。
- 返回值
事务的 GCI,或者
-1
如果没有可用的。
- 描述
获取 blob 读取操作的当前批处理大小(以字节为单位)。当给定事务中要读取的 blob 数据量超过此数量时,将执行该事务的所有待处理 blob 读取操作。
- 签名
Uint32 getMaxPendingBlobReadBytes ( void ) const
- 参数
没有。
- 返回值
当前 blob 读取批大小,以字节为单位。有关详细信息,请参阅 NdbTransaction::setMaxPendingBlobReadBytes()。
- 描述
获取 blob 写入操作的当前批处理大小(以字节为单位)。当给定事务中要写入的 blob 数据量超过此数量时,将执行该事务的所有待处理 blob 写入操作。
- 签名
Uint32 getMaxPendingBlobWriteBytes ( void ) const
- 参数
没有。
- 返回值
当前 blob 写入批大小,以字节为单位。有关详细信息,请参阅 NdbTransaction::setMaxPendingBlobWriteBytes()。
- 描述
此方法返回最近发生错误的行号。
- 签名
int getNdbErrorLine ( void )
- 参数
没有。
- 返回值
最近错误的行号。
有关处理事务中的错误的其他信息,请参阅第 1.4.2.3.6 节,“错误处理”。
- 描述
-
此方法检索导致错误的操作。
要获取有关实际错误的更多信息,请使用 返回的对象 的
NdbOperation::getNdbError()
方法。NdbOperation
getNdbErrorOperation()
- 签名
NdbOperation* getNdbErrorOperation ( void )
- 参数
没有。
- 返回值
指向
NdbOperation
.
有关处理事务中的错误的其他信息,请参阅第 1.4.2.3.6 节,“错误处理”。
- 描述
-
此方法用于创建
NdbIndexOperation
与给定表关联的表。同一事务中的所有索引操作都必须使用此方法进行初始化。操作必须在执行之前定义。
- 签名
NdbIndexOperation* getNdbIndexOperation ( const NdbDictionary::Index* index )
- 参数
Index
要对其执行操作 的对象。- 返回值
指向新
NdbIndexOperation
.
- 描述
-
此方法用于创建
NdbIndexScanOperation
与给定表关联的表。同一事务中的所有索引扫描操作都必须使用此方法进行初始化。操作必须在执行之前定义。
- 签名
NdbIndexScanOperation* getNdbIndexScanOperation ( const NdbDictionary::Index* index )
- 参数
Index
要对其执行操作 的对象。- 返回值
- 描述
-
此方法用于创建
NdbOperation
与给定表关联的表。同一事务中的所有操作都必须使用此方法进行初始化。操作必须在执行之前定义。
- 签名
NdbOperation* getNdbOperation ( const NdbDictionary::Table* table )
- 参数
Table
要对其执行操作 的对象。- 返回值
指向新
NdbOperation
.
- 描述
-
此方法用于创建
NdbScanOperation
与给定表关联的表。同一事务中的所有扫描操作都必须使用此方法进行初始化。操作必须在执行之前定义。
- 签名
NdbScanOperation* getNdbScanOperation ( const NdbDictionary::Table* table )
- 参数
Table
要对其执行操作 的对象。- 返回值
指向新
NdbScanOperation
.
- 描述
-
此方法用于检索事务的已完成操作。它通常用于获取属于给定事务的所有操作以检查错误。
NdbTransaction::getNextCompletedOperation(NULL)
返回交易的第一个NdbOperation
对象; 返回在 之后定义的对象 。NdbTransaction::getNextCompletedOperation(
myOp
)NdbOperation
NdbOperation
myOp
此方法应仅在事务执行后但在事务关闭之前使用。
- 签名
const NdbOperation* getNextCompletedOperation ( const NdbOperation* op ) const
- 参数
此方法需要一个参数
op
,它是一个操作(NdbOperation
对象),或者NULL
。- 返回值
以下操作
op
或为事务定义的第一个操作(如果getNextCompletedOperation()
使用 调用)NULL
。
- 描述
使用 插入一个元组
NdbRecord
。- 签名
-
const NdbOperation* insertTuple ( const NdbRecord* key_rec, const char* key_row, const NdbRecord* attr_rec, const char* attr_row, const unsigned char* mask = 0, const NdbOperation::OperationOptions* opts = 0, Uint32 sizeOfOptions = 0 )
const NdbOperation* insertTuple ( const NdbRecord* combined_rec, const char* combined_row, const unsigned char* mask = 0, const NdbOperation::OperationOptions* opts = 0, Uint32 sizeOfOptions = 0 )
- 参数
-
insertTuple()
采用以下参数:-
指向 指示要插入
NdbRecord
的记录 ( ) 的指针。key_rec
也可以使用单个
NdbRecord
指针和单个char
指针 (combined_rec
,combined_row
) 调用此方法,其中单个NdbRecord
表示记录、属性和数据。 key_row
要插入 的一行 ( ) 数据。指向 指示要插入
NdbRecord
的属性 ( ) 的指针。attr_rec
attr_row
要作为属性插入 的一行 ( ) 数据。可
mask
用于过滤要插入的列的 。OperationOptions
(opts
) 可用于提供更细粒度的操作定义控制。传递的OperationOptions
结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;对于每种类型的操作支持的选项,请参阅 NdbTransaction::readTuple()。可选
sizeOfOptions
参数用于保持此接口与以前的OperationOptions
结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的OperationOptions
结构。要启用此功能,调用者应传递sizeof(NdbOperation::OperationOptions)
此参数的值。
-
- 返回值
const
指向NdbOperation
表示此插入操作 的 指针。
- 描述
NdbRecord
此方法使用对象 读取元组 。- 签名
const NdbOperation* readTuple ( const NdbRecord* key_rec, const char* key_row, const NdbRecord* result_rec, char* result_row, NdbOperation::LockMode lock_mode = NdbOperation::LM_Read, const unsigned char* result_mask = 0, const NdbOperation::OperationOptions* opts = 0, Uint32 sizeOfOptions = 0 )
- 参数
-
此方法采用以下参数:
key_rec
是指向NdbRecord
表或索引的指针。如果在表上,则操作使用主键;如果在索引上,则操作使用唯一键。无论哪种情况,都key_rec
必须包括键的所有列。-
传递给此方法的定义了受影响元组的主键或唯一键,并且在调用
key_row
之前必须保持有效 。execute()
掩码(如果不是
NULL
)定义要读取、更新或插入的属性子集。只有 设置了才会影响列。掩码由方法复制,因此在调用返回后不需要保持有效。(mask[
attrId
>> 3] & (1<<(attrId
& 7))) result_rec
是指向NdbRecord
用于保存结果 的指针result_row
为结果数据定义一个缓冲区。lock_mode
指定对操作有效的锁定模式。有关允许的值和其他信息, 请参阅 NdbOperation::LockMode 。result_mask
定义要读取的属性子集。只有mask[attrId >> 3] & (1<<(attrId & 7))
设置了才会影响列。掩码被复制,因此在方法调用返回后不需要保持有效。-
OperationOptions
(opts
) 可用于提供更细粒度的操作定义控制。传递的OperationOptions
结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;下表显示了每种类型的操作支持的选项:表 2.69 NdbTransaction::readTuple() OperationOptions (opts) 参数的操作类型,以及每种类型支持的操作选项
操作类型(方法) OperationOptions
支持的标志readTuple()
OO_ABORTOPTION
,OO_GETVALUE
,OO_PARTITION_ID
,OO_INTERPRETED
insertTuple()
OO_ABORTOPTION
,OO_SETVALUE
,OO_PARTITION_ID
,OO_ANYVALUE
updateTuple()
OO_ABORTOPTION
,OO_SETVALUE
,OO_PARTITION_ID
,OO_INTERPRETED
,OO_ANYVALUE
writeTuple()
OO_ABORTOPTION
,OO_SETVALUE
,OO_PARTITION_ID
,OO_ANYVALUE
deleteTuple()
OO_ABORTOPTION
,OO_GETVALUE
,OO_PARTITION_ID
,OO_INTERPRETED
,OO_ANYVALUE
可选
sizeOfOptions
参数用于保持此接口与以前的OperationOptions
结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的OperationOptions
结构。要启用此功能,调用者应传递sizeof(NdbOperation::OperationOptions)
此参数的值。
- 返回值
指向
NdbOperation
表示此读取操作的指针(这可用于检查错误)。
- 描述
-
此方法更新事务的超时计数器,从而避免由于事务超时而中止。
不建议锁定记录并长时间维护它,因为这会影响其他事务。
- 签名
int refresh ( void )
- 参数
没有。
- 返回值
0
成功 返回,-1
失败返回。
- 描述
-
此方法用于在 不再需要时释放锁定句柄(请参阅NdbOperation::getLockHandle )。对于
NdbRecord
主键读取操作,在执行关联的读取操作之前不能调用它。当该事务关闭时,与给定事务关联的所有锁句柄都会被释放。
- 签名
int releaseLockHandle ( const NdbLockHandle* lockHandle )
- 参数
NdbLockHandle
要释放 的对象。- 返回值
0 成功。
- 描述
使用可选的排序对表执行索引范围扫描。
- 签名
NdbIndexScanOperation* scanIndex ( const NdbRecord* key_record, const NdbRecord* result_record, NdbOperation::LockMode lock_mode = NdbOperation::LM_Read, const unsigned char* result_mask = 0, const NdbIndexScanOperation::IndexBound* bound = 0, const NdbScanOperation::ScanOptions* options = 0, Uint32 sizeOfOptions = 0 )
- 参数
key_record
描述要扫描的索引 。它必须是索引的关键记录;也就是说,它必须至少指定索引的所有键列。key_record
必须从要扫描的索引创建(而不是从基础表创建) 。-
result_record
描述要从扫描返回的行 。对于有序索引扫描,result_record
必须是要扫描的索引的关键记录;也就是说,它必须(至少)包括索引中的所有列(NDB API 需要完整的索引键来合并排序从每个片段返回的有序行)。与 一样
key_record
,result_record
必须从基础表创建,而不是从要扫描的索引创建。在扫描操作关闭之前,key_record
和结构都必须保持原样。result_record
NdbRecord
result_mask
指针是可选 的。如果它存在,则只有那些设置了相应位(按属性 ID 顺序)的列result_mask
才会在扫描中实际检索到。是在result_mask
内部复制的,因此与它相反, 它在调用result_record
时不需要有效。execute()
-
IndexBound
可以在此调用中或在对 的单独调用中指定 单个NdbIndexScanOperation::setBound()
。要执行多范围读取, 结构scan_flags
中的ScanOptions
必须包含SF_MULTIRANGE
. 可以使用对 的连续调用来添加额外的界限NdbIndexScanOperation::setBound()
。要指定等于界限,请对
low_key
和high_key
以及低位和高位包含位设置使用相同的行指针。对于多范围扫描, 指针
low_key
和high_key
指针必须是唯一的。换句话说,不允许在一次扫描中为几个不同的范围边界重复使用同一个行缓冲区。low_key
但是,允许使用与和 相同的行指针high_key
来指定等于边界;也允许在scanIndex()
方法返回后重用这些行——也就是说,它们不需要保持有效直到execute()
时间(与NdbRecord
指针不同)。 要指定其他选项,请传递一个
ScanOptions
结构。的
sizeOfOptions
存在是为了启用此接口的向后兼容性。此参数指示ScanOptions
编译客户端时结构的大小,并启用对旧式ScanOptions
结构的使用的检测。如果不需要此功能,则可以将此参数保留设置为 0。
- 返回值
当前
NdbIndexScanOperation
,可用于错误检查。
- 描述
此方法执行表扫描,使用
NdbRecord
对象读取列数据。- 签名
NdbScanOperation* scanTable ( const NdbRecord* result_record, NdbOperation::LockMode lock_mode = NdbOperation::LM_Read, const unsigned char* result_mask = 0, Uint32 scan_flags = 0, Uint32 parallel = 0, Uint32 batch = 0 )
- 参数
-
该
scanTable()
方法采用以下参数:指向
NdbRecord
用于存储结果的指针。这result_record
必须保持有效,直到execute()
调用完成。对
lock_mode
操作有效。有关允许的值和其他信息, 请参阅 NdbOperation::LockMode 。result_mask
指针是可选 的。如果它存在,则只有那些设置了相应位(按属性 ID 顺序)的列result_mask
才会在扫描中实际检索到。是在result_mask
内部复制的,因此与它相反, 它在调用result_record
时不需要有效。execute()
scan_flags
可用于为扫描施加排序和排序条件。有关允许值的列表, 请参阅 NdbScanOperation::ScanFlag 。parallel
参数是所需的并行度,或 最大0
并行度(并行接收来自所有片段的行),这是默认值。batch
确定是否使用批处理。默认值为 0(关闭)。
- 返回值
指向
NdbScanOperation
表示此扫描的指针。如有必要,可以检查操作是否有错误。
- 描述
设置 blob 读取操作的批量大小(以字节为单位)。当给定事务中要读取的 blob 数据量超过此数量时,将执行该事务的所有待处理 blob 读取操作。
- 签名
void setMaxPendingBlobReadBytes ( Uint32 bytes )
- 参数
批量大小,作为
bytes
. 使用 0 会导致禁用 blob 读取批处理,这是默认行为(为了向后兼容)。- 返回值
没有。
blob 读取批处理也可以在
mysql客户端和其他 MySQL 客户端应用程序中使用 MySQL 服务器的
--ndb-blob-read-batch-bytes
选项及其关联的 MySQL 服务器系统变量进行控制。
- 描述
设置 blob 写入操作的批处理大小(以字节为单位)。当给定事务中要写入的 blob 数据量超过此数量时,将执行该事务的所有待处理 blob 写入操作。
- 签名
void setMaxPendingBlobWriteBytes ( Uint32 bytes )
- 参数
批量大小,作为
bytes
. 使用 0 会导致禁用 blob 写入批处理,这是默认行为(为了向后兼容)。- 返回值
没有。
通过将 MySQL 服务器的服务器系统变量设置为适当的值,
还可以
在 NDB 8.0.30 及更高版本
中的mysql客户端和其他 MySQL 客户端应用程序中控制 Blob 写入批处理。ndb_replica_blob_write_batch_bytes
您应该知道,如果
ndb_replica_blob_write_batch_bytes
未设置,有效的 blob 批处理大小(即,为 blob 列写入的最大待处理字节数)由默认值的最大值
ndb_replica_blob_write_batch_bytes
和为
--ndb-blob-write-batch-bytes
MySQL 服务器选项。因此,您应该使用
ndb_replica_blob_write_batch_bytes
而不是--ndb-blob-write-batch-bytes
.
在 NDB 8.0.30 之前,您必须使用该
--ndb-blob-write-batch-bytes
选项或其关联的 MySQL 服务器系统变量之一来设置来自mysql或其他 MySQL 客户端程序的 blob 批处理大小。
- 描述
-
在使用多个对象时启用或禁用架构对象所有权检查
Ndb_cluster_connection
。启用此检查后,将检查此事务使用的对象以确保它们属于NdbDictionary
此连接所拥有的。这是通过从连接中获取同名的模式对象并将它们与传递给事务的模式对象进行比较来完成的。如果它们不匹配,则返回错误。从 NDB 7.3.9 开始,此方法可用于调试目的。(错误号 19875977)您应该知道启用此检查会降低性能,因此您应该避免在生产环境中这样做。
- 签名
void setSchemaObjOwnerChecks ( bool runChecks )
- 参数
单个参数
runChecks
。用于true
启用所有权检查,false
禁用它们。- 返回值
没有。
- 描述
该方法对当前交易创建一个解锁操作;执行时,解锁操作会删除传递给该方法 的
NdbLockHandle
(请参阅 NdbOperation::getLockHandle )引用的锁。- 签名
const NdbOperation* unlock ( const NdbLockHandle* lockHandle, NdbOperation::AbortOption ao = NdbOperation::DefaultAbortOption )
- 参数
-
指向锁柄的指针;此外,可选地,一个
AbortOption
值ao
。如果解锁操作失败——例如,由于行已经被解锁——
AbortOption
指定如何处理,默认情况下错误导致事务中止。 - 返回值
指向
NdbOperation
(创建的解锁操作)的指针。
- 描述
使用
NdbRecord
对象更新元组。- 签名
const NdbOperation* updateTuple ( const NdbRecord* key_rec, const char* key_row, const NdbRecord* attr_rec, const char* attr_row, const unsigned char* mask = 0, const NdbOperation::OperationOptions* opts = 0, Uint32 sizeOfOptions = 0 )
- 参数
-
updateTuple()
采用以下参数:key_rec
是指向NdbRecord
表或索引的指针。如果在表上,则操作使用主键;如果在索引上,则操作使用唯一键。无论哪种情况,都key_rec
必须包括键的所有列。传递给此方法的定义了受影响元组的主键或唯一键,并且在调用
key_row
之前必须保持有效 。execute()
-
attr_rec
是一个NdbRecord
引用要更新的属性。笔记对于唯一索引操作,
attr_rec
必须引用索引的基础表,而不是索引本身。 attr_row
是包含用于更新的新数据的缓冲区。如果
mask
不是NULL
,则定义要更新的属性子集。掩码被复制,因此在调用此方法返回后不需要保持有效。OperationOptions
(opts
) 可用于提供更细粒度的操作定义控制。传递的OperationOptions
结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;对于每种类型的操作支持的选项,请参阅 NdbTransaction::readTuple()。可选
sizeOfOptions
参数用于保持此接口与以前的OperationOptions
结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的OperationOptions
结构。要启用此功能,调用者应传递sizeof(NdbOperation::OperationOptions)
此参数的值。
- 返回值
表示此
NdbOperation
操作(可用于检查错误)。
- 描述
此方法用于
NdbRecord
写入数据元组。- 签名
const NdbOperation* writeTuple ( const NdbRecord* key_rec, const char* key_row, const NdbRecord* attr_rec, const char* attr_row, const unsigned char* mask = 0, const NdbOperation::OperationOptions* opts = 0, Uint32 sizeOfOptions = 0 )
- 参数
-
此方法采用以下参数:
key_rec
是指向NdbRecord
表或索引的指针。如果在表上,则操作使用主键;如果在索引上,则操作使用唯一键。无论哪种情况,都key_rec
必须包括键的所有列。传递给此方法的
key_row
定义要写入的元组的主键或唯一键,并且在execute()
调用之前必须保持有效。-
attr_rec
是NdbRecord
对要写入的属性的引用。对于唯一索引操作,
attr_rec
必须引用索引的基础表,而不是索引本身。 attr_row
是包含新数据的缓冲区。如果
mask
不是NULL
,则定义要写入的属性子集。掩码被复制,因此在调用此方法返回后不需要保持有效。OperationOptions
(opts
) 可用于提供更细粒度的操作定义控制。传递的OperationOptions
结构带有标志,指示存在哪些操作定义选项。并非所有操作类型都支持所有操作选项;对于每种类型的操作支持的选项,请参阅 NdbTransaction::readTuple()。可选
sizeOfOptions
参数用于提供此接口与以前的OperationOptions
结构定义的向后兼容性。如果接口实现检测到异常大小,它可以使用它来确定如何解释传递的OperationOptions
结构。要启用此功能,调用者应传递sizeof(NdbOperation::OperationOptions)
此参数的值。
- 返回值
const
指向NdbOperation
表示此写操作 的指针。如有必要,可以检查操作是否有错误。