← Назад к вопросам

В каком случае первичный ключ равен null

1.3 Junior🔥 171 комментариев
#Базы данных и SQL

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

В каком случае первичный ключ равен null

Краткий ответ

Первичный ключ никогда не может быть NULL в реляционных базах данных. Это одно из фундаментальных свойств первичного ключа, определённое в стандарте SQL и принципах ACID.

Почему это невозможно

Определение первичного ключа:

  • Уникально идентифицирует каждую строку в таблице
  • Не содержит дубликатов
  • Не может быть NULL

Если первичный ключ содержит NULL, это нарушает его назначение:

  • Как идентифицировать строку, если значение неизвестно?
  • Как различать две строки с NULL в PK?
  • Нарушается уникальность (NULL != NULL в SQL стандарте)

Попытка вставить NULL в PK

CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100)
);

INSERT INTO users (id, name) VALUES (NULL, 'John');
// Error: NOT NULL constraint violated

Частые ошибки разработчиков

1. Забывают про AUTO_INCREMENT:

// ❌ Плохо
CREATE TABLE users (
  id INT PRIMARY KEY,
  name VARCHAR(100)
);
INSERT INTO users (name) VALUES ('John');

// ✅ Правильно
CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(100)
);
INSERT INTO users (name) VALUES ('John');

2. Путают с UNIQUE ключами: Уникальный ключ может быть NULL:

CREATE TABLE users (
  id INT PRIMARY KEY AUTO_INCREMENT,
  email VARCHAR(100) UNIQUE,
  phone VARCHAR(20) UNIQUE
);

INSERT INTO users (email, phone) VALUES (NULL, NULL);

В контексте Node.js ORM

Sequelize:

const User = sequelize.define('User', {
  id: {
    type: DataTypes.INTEGER,
    primaryKey: true,
    autoIncrement: true,
  },
});

TypeORM:

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;
}

Вывод

Первичный ключ не может быть NULL — это требование реляционной модели данных. Проверяйте AUTO_INCREMENT, избегайте ручного управления и используйте ORM для безопасности.

В каком случае первичный ключ равен null | PrepBro