sql >> Databasteknik >  >> RDS >> PostgreSQL

Ska viloläge använda unika sekvenser för varje bord?

Jag har nyligen löst det här problemet för mitt projekt. Jag använder den förbättrade sekvensgeneratorn (som är standard för sekvensliknande generatorer) och ställer in prefer_sequence_per_entity parameter till true .

Innehållet i mitt package-info.java :

@GenericGenerator(
    name = "optimized-sequence",
    strategy = "enhanced-sequence",
    parameters = {
        @Parameter(name="prefer_sequence_per_entity", value="true"),
        @Parameter(name="optimizer", value="hilo"),
        @Parameter(name="increment_size", value="50")})
package org.example.model;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

På användningssidan behöver du bara

@Id @GeneratedValue(generator="optimized-sequence")
public long id;

Jag föredrar att ha separata sekvenser eftersom jag ibland släpper en tabell och återskapar den, och jag vill att ID:n börjar från ett.



  1. Hur CONCAT_WS() fungerar i PostgreSQL

  2. Hur schemalägger man en mysql lagrad procedur i Windows?

  3. Hur man ställer in intervallutdataformatet i PostgreSQL

  4. Hämtar okänd primärnyckel för tabellen medan ID:t finns där