I am doing Library db , sometimes I need to remove books and add a new one and I dont like how it starts missing lower ids and it just goes one . Because Serial just increade everytime . Is there a way how to do that ? For example different type of column instead of SERIAL
            Asked
            
        
        
            Active
            
        
            Viewed 62 times
        
    1
            
            
        - 
                    I'd say "live with it". Looks like a performance killer to me. – Federico klez Culloca Oct 05 '22 at 10:31
- 
                    http://www.codediesel.com/mysql/sequence-gaps-in-mysql/ This might help (I know it's mysql, but it should mostly still apply; except for syntax) – Jurgen Rutten Oct 05 '22 at 10:49
- 
                    You don't. Gaps in generated primary key values are expected and nothing to worry about. The **only**job for a primary key value is to be unique. It is completely meaningless if that value is 1,2,-6549, 42 or 464293. If you want to "renumber" the existing rows, you would need to UPDATE all tables that reference those values as well - something that will get ugly and complicated quickly. – Oct 05 '22 at 11:12
1 Answers
0
            
            
        I don't know if that will solve your problem but I suggest that you do updating for all serial ids again.
So If you want it to be (1,2,3,4) so you can use this query :
ALTER SEQUENCE seq RESTART WITH 1;
UPDATE t SET idcolumn=nextval('seq');
source: How to reset sequence in postgres and fill id column with new data?
You can create a service that executes this query inside deleting books service, so after deleting books you will call this service to rearange ids
public void UpdateIds() {
// make a connection with your database and send query above to update ids
} 
and in your service where you delete books, I suppose you have a service looks like that
public void deleteBooks(//some books ids to be deleted
){
//some code for deleting books by ids
// call the method above to update ids again 
UpdateIds()
    
}
 
    
    
        Ali Zedan
        
- 285
- 3
- 17
