ApacheIgnite如何设置主键以自动增长?

ApacheIgnite如何设置主键以自动增长?,ignite,Ignite,嗯,我现在有一个需求,需要apacheignitesql。创建表时,类似于在Mysql中将主键设置为自动增长。当Apache Ignite创建表时,将主键设置为自动增长?Ignite SQL中没有自动增量。但您可以实现一个自定义SQL函数,该函数根据以下内容生成ID: 公共类SqlFunc{ @QuerySqlFunction 公共静态长nextId(){ Ignite Ignite=点火。点火(); ignite原子序列seq=ignite.原子序列(“seq”,0,真); 返回seq.get

嗯,我现在有一个需求,需要
apacheignitesql
。创建表时,类似于在
Mysql
中将主键设置为自动增长。当Apache Ignite创建表时,将主键设置为自动增长?

Ignite SQL中没有自动增量。但您可以实现一个自定义SQL函数,该函数根据以下内容生成ID:

公共类SqlFunc{
@QuerySqlFunction
公共静态长nextId(){
Ignite Ignite=点火。点火();
ignite原子序列seq=ignite.原子序列(“seq”,0,真);
返回seq.getAndIncrement();
}
}
下面是一个缓存配置,它允许在SQL中使用
nextId()
函数:


有关自定义SQL函数的详细信息:

UPD:

请注意,每次
IgniteAtomicSequence
保留一系列ID时,都会启动一个内部事务。如果使用显式事务,可能会导致意外的后果,如死锁


因此,应谨慎使用这种方法。特别是,使用
nextId()函数的SQL查询不应在事务中运行。

Ignite SQL中没有自动增量。但您可以实现一个自定义SQL函数,该函数根据以下内容生成ID:

公共类SqlFunc{
@QuerySqlFunction
公共静态长nextId(){
Ignite Ignite=点火。点火();
ignite原子序列seq=ignite.原子序列(“seq”,0,真);
返回seq.getAndIncrement();
}
}
下面是一个缓存配置,它允许在SQL中使用
nextId()
函数:


有关自定义SQL函数的详细信息:

UPD:

请注意,每次
IgniteAtomicSequence
保留一系列ID时,都会启动一个内部事务。如果使用显式事务,可能会导致意外的后果,如死锁


因此,应谨慎使用这种方法。特别是,使用
nextId()函数的SQL查询不应该在事务中运行。

我现在有一个问题。我应该在
apacheignite
项目中重建此方法吗?或者我应该创建一个新项目将其放入新项目中,如果我将此方法放入新方法中,那么jar`应该放在
libs
apacheignite
安装目录中吗?如果现在创建表时要使用此方法,该如何使用?在
sqlFunctionClasses
属性中指定的类应该位于所有节点的类路径上。您可以将jar与它一起放入libs目录。如果我想在创建表时使用主键自动增长此方法,我该如何使用它?您应该在insert语句中使用它,并将其结果指定为主键的值。例如,
INSERT-INTO-accounts(id,name)value(nextId(),'John')
谢谢你仔细的回答,我现在已经知道如何使用它了。我现在有一个问题。我应该在
apacheignite
项目中重建此方法吗?或者我应该创建一个新项目将其放入新项目中,如果我将此方法放入新方法中,那么jar`应该放在
libs
apacheignite
安装目录中吗?如果现在创建表时要使用此方法,该如何使用?在
sqlFunctionClasses
属性中指定的类应该位于所有节点的类路径上。您可以将jar与它一起放入libs目录。如果我想在创建表时使用主键自动增长此方法,我该如何使用它?您应该在insert语句中使用它,并将其结果指定为主键的值。例如,
INSERT-INTO-accounts(id,name)值(nextId(),'John')
谢谢您仔细的回答,我现在已经知道如何使用它了。