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')
谢谢您仔细的回答,我现在已经知道如何使用它了。