序列¶
序列在数据库中生成唯一的顺序数值。 序列不与特定表关联,可以为多个表设置同一序列中值。
基本用法¶
您可以在模型中设置一个序列,然后使用它来生成属性值:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Order>()
.Property(o => o.OrderNo)
.HasDefaultValueSql("NEXTVAL('MySchema.OrderNumbers')");
}
CREATE SEQUENCE MySchema.OrderNumbers INCREMENT BY 10 MINVALUE 0 MAXVALUE 9223372036854775807 START WITH 1 NO CYCLE;
序列是基于 bigint 运算的,因此其范围不能超过八字节的整数范围(-9223372036854775808 到 9223372036854775807).
注意:序列创建后,可以使用函数 nextval、currval 和 setval 对序列进行操作。注意:在使用函数currval查看当前序列值之前,必须先使用nextval或setval对序列进行初始化,否则系统将会报错。