#  [ ![GORM](/gorm.svg) ](/)

[ __ Docs ](/docs/) [ __ Gen ](/gen/) [ __ Community ](/community.html) [ __
API ](https://pkg.go.dev/gorm.io/gorm) [ __ Contribute ](/contribute.html)

__

__ English  English  简体中文  Deutsch  bahasa Indonesia  日本語  Русский  한국어
हिन्दी  French  Italiano  Español

#  Composite Primary Key

[ __ ](https://github.com/go-
gorm/gorm.io/edit/master/pages/docs/composite_primary_key.md "Improve this
page")

Set multiple fields as primary key creates composite primary key, for example:

    
    
    type Product struct {  
      ID           string `gorm:"primaryKey"`  
      LanguageCode string `gorm:"primaryKey"`  
      Code         string  
      Name         string  
    }  
      
  
---  
  
**Note** integer ` PrioritizedPrimaryField ` enables ` AutoIncrement ` by
default, to disable it, you need to turn off ` autoIncrement ` for the int
fields:

    
    
    type Product struct {  
      CategoryID uint64 `gorm:"primaryKey;autoIncrement:false"`  
      TypeID     uint64 `gorm:"primaryKey;autoIncrement:false"`  
    }  
      
  
---  
  
[ ![GitHub tag \(latest SemVer\)](https://img.shields.io/github/v/tag/go-
gorm/gorm?label=Latest GORM Release&color=red&&style=for-the-
badge&logo=go&logoColor=red) ](v2_release_note.html)

Last updated: 2024-04-13  [ __ Prev  ](constraints.html "Constraints") [ Next
__ ](security.html "Security")

#  Platinum Sponsors __

[ Become a Sponsor! ](/contribute.html#Donations)

#  Gold Sponsors __

[ ![Encore](/sponsors-imgs/encore.png)
](https://www.encore.dev/?utm_source=github&utm_medium=github-gorm-sponsor-
logo&utm_campaign=gorm-20231215 "Encore")

[ ![Incident.io](/sponsors-imgs/incident-io.svg) ](https://incident.io
"Incident.io")

[ Become a Sponsor! ](/contribute.html#Donations)

#  Platinum Sponsors

[ Become a Sponsor! ](/contribute.html#Donations)

#  Gold Sponsors

[ ![Encore](/sponsors-imgs/encore.png)
](https://www.encore.dev/?utm_source=github&utm_medium=github-gorm-sponsor-
logo&utm_campaign=gorm-20231215 "Encore")

[ ![Incident.io](/sponsors-imgs/incident-io.svg) ](https://incident.io
"Incident.io")

[ Become a Sponsor! ](/contribute.html#Donations)

**Contents** [ Improve this page ](https://github.com/go-
gorm/gorm.io/edit/master/pages/docs/composite_primary_key.md) Back to Top

**Getting Started** [ Overview ](index.html) [ Declaring Models ](models.html)
[ Connecting to Database ](connecting_to_the_database.html) **CRUD Interface**
[ Create ](create.html) [ Query ](query.html) [ Advanced Query
](advanced_query.html) [ Update ](update.html) [ Delete ](delete.html) [ Raw
SQL & SQL Builder ](sql_builder.html) **Associations** [ Belongs To
](belongs_to.html) [ Has One ](has_one.html) [ Has Many ](has_many.html) [
Many To Many ](many_to_many.html) [ Association Mode ](associations.html) [
Preloading (Eager Loading) ](preload.html) **Tutorials** [ Context
](context.html) [ Error Handling ](error_handling.html) [ Method Chaining
](method_chaining.html) [ Session ](session.html) [ Hooks ](hooks.html) [
Transactions ](transactions.html) [ Migration ](migration.html) [ Logger
](logger.html) [ Generic Database Interface ](generic_interface.html) [
Performance ](performance.html) [ Customize Data Types ](data_types.html) [
Scopes ](scopes.html) [ Conventions ](conventions.html) [ Settings
](settings.html) **Advanced Topics** [ Database Resolver ](dbresolver.html) [
Sharding ](sharding.html) [ Serializer ](serializer.html) [ Prometheus
](prometheus.html) [ Hints ](hints.html) [ Indexes ](indexes.html) [
Constraints ](constraints.html) [ Composite Primary Key
](composite_primary_key.html) [ Security ](security.html) [ GORM Config
](gorm_config.html) [ Write Plugins ](write_plugins.html) [ Write Driver
](write_driver.html) [ ChangeLog ](changelog.html) [ Community
](/community.html) [ Contribute ](/contribute.html) [ Translate current site
](/contribute.html#Translate-this-site)

© 2013~2024 [ Jinzhu ](https://github.com/jinzhu)  
Documentation licensed under [