![]() This is required for good performance, and it does not constitute a problem. Sequences don’t follow the normal transactional rules: if a transaction rolls back, the sequence does not reset its counter. Still, accessing a sequence from many concurrent SQL statements could become a bottleneck, so there is the CACHE option that makes the sequence hand out several values at once to database sessions. Sequences are highly optimized for concurrent access, and they will never issue the same number twice. It does this using an internal counter that it increments. ![]() There are two basic techniques: Generating keys with a sequenceĪ sequence is a database object whose sole purpose in life is to generate unique numbers. ![]() Techniques for auto-generated primary keys in PostgreSQL Some people even argue that you should use an artificial primary key even if there is a natural one, but I won’t go into that “holy war”. But typically, there is no such attribute, and you have to generate an artificial primary key. Now, sometimes a table has a natural primary key, for example the social security number of a country’s citizens. This is because foreign key constraints typically reference primary keys, and changing a primary key that is referenced elsewhere causes trouble or unnecessary work. You are well advised to choose a primary key that is not only unique, but also never changes during the lifetime of a table row. If you wonder why, search the internet for the thousands of questions asking for help with removing duplicate entries from a table. In a relational database, it is important to be able to identify an individual table row. Why auto-generated primary keys?Įvery table needs a primary key. In this article, I’ll explore the options and give recommendations. UPDATED : Sometimes customers ask me about the best choice for auto-generated primary keys. Auto-generated auto-increment autoincrement identity columns postgresql primary key sequence uuid
0 Comments
Leave a Reply. |