2016-08-28 1 views
1

가능한 한 최선을 다해 설명하려고합니다. 내 DB에는 "상태"라는 필드가있는 "week"라는 행이 있습니다.
미래MYSQL은 특정 값이 필드에있을 수있는 횟수를 제한합니다.

완료

활동

하나의 "활성"주 행이있을 수 있습니다 상태는 다음의 값을 지정할 수 있습니다. 미래와 완료는 여러 번 발생할 수 있습니다.

그렇다면 액티브에게 하나 이상의 행에서 발생할 수없는 고유 한 개별 값을 만드는 방법이 있습니까?

내가 할 수있는 유일한 방법은 PHP를 사용하여 행을 모두 활성으로 설정했는지 찾기 위해 PHP를 사용하여 모든 행을 읽고 루프를 작성한 다음 관리자에게 이전에 해당 값을 변경하도록 요청하는 것입니다. 다른 주를 활성으로 선택합니다.

+0

순전히 기술적 인 방법으로이를 방지하려고하십니까? 그런 다음 다른 열 (예 : '활성', 트리거 또는 수식 또는 대체 값으로 계산 될 수 있음)과 고유 한 색인을 추가해야합니다. 두 행을 "1"로 설정하면 오류가 발생합니다. 그러나 이는 사용자가 데이터베이스의 값을 직접 편집 할 수있는 경우에만 필요합니다. 어쨌든 사용자가 PHP를 사용하여 값을 편집하는 경우, 다른 행을 활성으로 설정하기 전에 (또는 수행하는 동안) 수행 할 모든 유형의 확인 및 갱신을 수행 할 수 있습니다. – Solarflare

+0

활성 레코드의 ID를 하나의 행만 포함하는 다른 테이블에 저장할 수 있습니다. 또는 행과 현재 날짜를 비교하여 상태를 확인하십시오. – Mike

+0

다른 열은 Solarflare로 생각할 수 있지만 행은 Active 및 Completed 또는 Active 및 Future 일 수 없습니다. – mediaguru

답변

0

PHP에서 모든 행을 반복하는 대신 활성 행이 있는지 확인할 수 있습니다.

SELECT COUNT(1) FROM table WHERE 'active' = 1

SELECT id FROM table WHERE 'active' = 1

또는

당신은 삽입하기 전에이 작업을 수행 할 수 있습니다.

행운을 비게하고 수표와 업데이트 사이에 행을 활성화 할 수 있습니다.

값이 하나 뿐인 경우 활성 행 ID 만 저장하는 다른 테이블을 만들 수 있습니다. 이 표에는 항상 하나의 레코드 만 있습니다.

관련 문제