2012-12-06 4 views
1

당 나는 제목이 설명,하지만 내가 가진 것은이 같은 테이블하는 방법을 잘하지 않았다 번 :MySQL의 삽입 (조건) 고유 한 값 사용자

user_id   | subscription_id 
6     12 
6     10 
12     6 
4     12 

각 사용자가 다른 모든 구독 할 수 있습니다 사용자가 INSERT 쿼리를 통해 두 번 다른 사용자를 구독하지 못하게 할 수 있습니까?

user_id   | subscription_id 
6     12 
6     12 

그리고 나는 그것을 피하려고 내 subscription_id이 고유하지으로

이 발생합니다. 내가 아는 한 무시 무시, INSERT UPDATE 및 ON DUPLICATE는 고유 키로 작동합니다.

+0

그들은 실제로 고유하고 기본 키에서 작동합니다. 트리거에 대해서는 확실하지 않습니다. 결론은 기본 키를 스패닝 : –

답변

0

당신은 user_id를위한 복합 기본 키를 가지고 데이터베이스 테이블을 설정해야합니다 및

각 행은 열 모두에서 고유해야합니다 그 방법을 subscription_id.

참조 : How to properly create composite primary keys - MYSQL

+0

오, 나는 그것이 쉬울 것입니다 실현하지 못했습니다! 고맙습니다 :) – Alex

0

튜플은 하나의 테이블 내에서 한 번 이상 발생하지 않을 수 있는지 확인하는 유일한 안정적이고 쉬운 방법 중 하나입니다

  1. 는 스패닝 고유 키

  2. 를 사용하여
  3. 스패닝 기본 키 사용

  4. 트리거 할 수 있음

첫 번째 두 개는 거의 같지만 고유 키는 null 값을 별개로 취급하므로 잘 작동하지 않을 수 있습니다.

ALTER TABLE user_subscriptions ADD PRIMARY(user_id, subscription_id);