← Назад к вопросам
Какие знаешь Constraints в PostgreSQL?
1.8 Middle🔥 191 комментариев
#Базы данных и SQL
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Constraints в PostgreSQL
Constraints (ограничения) — это правила на уровне базы данных, которые обеспечивают целостность данных и валидность информации. PostgreSQL предоставляет мощный набор инструментов для контроля качества данных.
1. PRIMARY KEY (Первичный ключ)
PRIMARY KEY гарантирует уникальность и обязательность значения. Это комбинация UNIQUE + NOT NULL.
// JPA пример
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(unique = true, nullable = false)
private String username;
}
2. UNIQUE (Уникальность)
UNIQUE гарантирует, что все значения в столбце уникальны, но позволяет несколько NULL.
@Entity
public class Account {
@Id
@GeneratedValue
private Long id;
@Column(unique = true)
private String email;
}
3. NOT NULL (Обязательность)
NOT NULL требует, чтобы в столбце всегда было значение.
@Entity
public class Employee {
@Id
private Long id;
@Column(nullable = false)
private String firstName;
@Column(nullable = false)
private String lastName;
}
4. FOREIGN KEY (Внешний ключ)
FOREIGN KEY обеспечивает ссылочную целостность между таблицами.
@Entity
public class Post {
@Id
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "user_id", nullable = false)
private User user;
}
5. CHECK (Проверка условия)
CHECK валидирует данные по произвольному условию.
@Entity
public class Product {
@Id
private Long id;
@Column(nullable = false)
@Min(0)
private BigDecimal price;
@Min(0)
private Integer quantity;
}
6. DEFAULT (Значение по умолчанию)
DEFAULT устанавливает значение автоматически, если не указано.
@Entity
public class User {
@Id
private Long id;
@Column(columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP")
private LocalDateTime createdAt;
@Column(columnDefinition = "VARCHAR(20) DEFAULT 'active'")
private String status;
}
7. Именованные constraints
Для удобства можно давать имена constraints.
Основные типы constraints
- PRIMARY KEY — уникальный идентификатор
- UNIQUE — уникальные значения
- NOT NULL — обязательное значение
- FOREIGN KEY — ссылочная целостность
- CHECK — условная валидация
- DEFAULT — значение по умолчанию
- DEFERRABLE — отложенная проверка
Best Practices
- Используй constraints активно на уровне БД
- NOT NULL для обязательных полей
- UNIQUE для альтернативных ключей
- FOREIGN KEY для связей
- DEFAULT для часто используемых значений
- CHECK для валидации доменов