web-dev-qa-db-fra.com

Contrainte unique sur plusieurs colonnes

J'utilise SEAM 2/Hibernate avec la base de données PostgreSQL 9. J'ai le tableau suivant

Active Band
===========
active_band_id serial
active_band_user text
active_band_date timestamp
active_band_process integer

Je voudrais ajouter une contrainte qui garantit que chaque nouvelle entrée a une combinaison unique de active_band_user et active_band_date.

Il pourrait y avoir plusieurs tentatives d'insertion par seconde, j'ai donc besoin que cela soit aussi efficace que possible, y a-t-il une annotation SEAM/hibernate que je peux utiliser dans le mappage d'entité?

Merci d'avance

38
DaveB

Il n'y a aucune annotation Hibernate qui vérifie l'unicité avant l'insertion/la mise à jour. Mais il y a une annotation qui générera une telle contrainte à la base de données si la création automatique de la base de données est utilisée:

 @Table(
    name="ACTIVE_BAND", 
    uniqueConstraints=
        @UniqueConstraint(columnNames={"active_band_user", "active_band_date"})
)
77
Mikko Maunu