[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-sql-kakie-otlichiya-mezhdu-ogranicheniyami-primary-i-unique":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},860,"kakie-otlichiya-mezhdu-ogranicheniyami-primary-i-unique",25,"sql","SQL","🗃️","Какие отличия между ограничениями PRIMARY и UNIQUE?","Оба ограничения гарантируют уникальность значений, но различаются в нескольких ключевых аспектах.\n\n| Характеристика | PRIMARY KEY | UNIQUE |\n|---------------|------------|--------|\n| Количество на таблицу | Только один | Можно несколько |\n| NULL-значения | Не допускает | Допускает (обычно одно, в PostgreSQL — несколько) |\n| Тип индекса (по умолчанию) | Кластерный (SQL Server) | Некластерный |\n| Семантика | Основной идентификатор записи | Дополнительное ограничение уникальности |\n\nВ PostgreSQL `PRIMARY KEY` автоматически создаёт B-tree индекс и подразумевает `NOT NULL`. `UNIQUE` также создаёт B-tree индекс, но допускает множественные `NULL`-значения (поскольку `NULL != NULL`). В SQL Server ограничение `UNIQUE` допускает только один `NULL`.\n\nНа практике `PRIMARY KEY` определяет основной способ идентификации записи (например, `id`), а `UNIQUE` используется для бизнес-ключей (например, `email`, `passport_number`), которые тоже должны быть уникальными.\n\n> **На собеседовании:** ключевые отличия — количество (один PK vs много UNIQUE), обработка NULL и тип индекса. Частая ошибка — не упомянуть, что `PRIMARY KEY` подразумевает `NOT NULL`.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Какие отличия между ограничениями PRIMARY и UNIQUE? — Gymterview","Оба ограничения гарантируют уникальность значений, но различаются в нескольких ключевых аспектах.",[7,13],true]