방아쇠 안에 있습니다. 모든 것이 잘 작동하지만 더 많은 일을해야합니다 :MySQL 데이터베이스, 날짜 형식, 트리거
테이블에 데이터를 삽입하기 전에 입력하려는 이벤트의 날짜의 차이가 최소 1 일인지 확인해야합니다.
즉, 목표 : 데이터베이스에 이미 2014-01-01 19:00:00 날짜가 있고 2014-01-01 날짜 (다른 레코드로)를 넣으려고하는 경우 언제든지 나를 풀어 주면 안된다. 최소 1 일 차이 만 허용됩니다.
그래서,이 (훨씬 더 많은 코드가 있기 때문에, 트리거에서 부분)이 어떻게하는지입니다 :
DECLARE k INT DEFAULT 0;
/* This is where I get the error, ABS is to make it always positive to go through
checking,
so that it wont matter whether the NEW date is before or after */
SELECT ABS(DATEDIFF(DATE_FORMAT(`performance_date`, '\'%Y-%m-%d %H:%i:%s\''),
DATE_FORMAT(NEW.`performance_date`, '\'%Y-%m-%d %H:%i:%s\''))) INTO k;
/* This part is not the problem, it's been tested in other cases */
IF k = 0 THEN
SIGNAL SQLSTATE '58005'
SET MESSAGE_TEXT = 'Wrong! Only 1 performance in 1 club is allowed per day! Change your date, or club!';
END IF;
오류 코드 : 1054 알 수없는 열 'performance_date' '필드 목록'
에서나는 또한 간단한 시도했습니다 ...DATEDIFF(`performance_date`, NEW.`performance_date`);
.
그리고 performance_date'이 NEW.performance_date'와''사이'경우 어떻게 :) 다음 위의 코드는 그 오류를 제공하기 위해 트리거가 발생합니다 (1)의 수를 반환하는,이 쿼리를 실행합니다 NEW.performance_date - 1'? –
예제에서 'NEW.performance_date - 1'은'2013-12-31 19 : 00 : 00'과 같으므로 '2013-12-31 19 : 00 : 00'부터 '2013-12'까지 -31 23 : 59 : 59'은 2014-01-01 00 : 00 : 00부터 2014-01-01 23 : 59 : 59까지 모든 일은 괜찮을 거라고 생각합니다. 쿼리와 일치하므로 "새 이벤트를 추가하려는 날에 이미 이미 이벤트가 있습니다"라고 플래그가 지정됩니다. – Jon
공연 사이에 24 시간이 필요하다는 것을 의미합니까? 하루 만에 두 가지 행사를 가질 수는 없습니까? – Jon