好吧,我现在有一个要求Apache Ignite SQL
。创建表时,它类似于将主键设置为在Mysql
中自动增长。 Apache Ignite
创建表时,将主键设置为自动增长吗?
答案 0 :(得分:2)
Ignite SQL中没有自动增量。但是您可以实现一个自定义SQL函数,该函数根据IgniteAtomicSequence生成ID:
public class SqlFunc {
@QuerySqlFunction
public static long nextId() {
Ignite ignite = Ignition.ignite();
IgniteAtomicSequence seq = ignite.atomicSequence("seq", 0, true);
return seq.getAndIncrement();
}
}
这里是缓存配置,允许在SQL中使用nextId()
函数:
<bean class="org.apache.ignite.configuration.CacheConfiguration">
<property name="name" value="cache"/>
<property name="sqlFunctionClasses" value="com.example.SqlFunc"/>
<property name="sqlSchema" value="PUBLIC"/>
</bean>
有关自定义SQL函数的更多信息:https://apacheignite-sql.readme.io/docs/custom-sql-functions
UPD:
请注意,每次IgniteAtomicSequence
保留一系列ID时,都会启动内部事务。如果使用显式事务,则可能导致死锁之类的意外后果。
因此,应谨慎使用此方法。特别是,使用nextId()
函数的SQL查询不应在事务中运行。