2016-09-12 4 views
2

이러한 쿼리에서 우리는 성공과 실패한 경우를 검사하고 있습니다. 성공의 경우같은 검색어로 oracle에서 4 번째 시도에서 mysql에서 3 번째 시도에서 잘못된 암호를 입력하면 계정이 잠김 상태가됩니까?

:마다 비밀번호가 올바르지 없음 잘못된 비밀번호 따라서 필드 잠겨로서 카운터가 0이 고장의 경우 'F'

이다. 카운터가 1 씩 증가하고 3보다 큰 경우 잠 깁니다.

오라클에서이

우리는 그래서 같은 방식으로 쿼리를 변경할 수 (오라클에서 잘 작동)에만 4 번째 시도에서 잠금 상태가 (이 4 번째 시도에서 잠한다) 제 3 시도에 고정되어 MySQL의에서

그것은 MySQL과 오라클 모두 작동합니까? 이 쿼리에서

:

<statement name="contentprovider-failed" 
    statement="update MDB_APPLICATION_NODE_PR set COUNTER=COUNTER+1, LOCKED= case when COUNTER &lt; ? 
            then 'f' else 't' end where USERNAME=?"> 

이 성공과 실패의 경우 전체 코드가 포함되어

<statement name="contentprovider-succeed" 
     statement="update MDB_APPLICATION_NODE_PR set COUNTER=0, LOCKED='f' where USERNAME=?"> 
     <param type="varchar"/> 
</statement> 

을 0

mysql과 oracle 모두에서 작동하도록 쿼리를 변경할 수 있습니까?

또는 java 및 thn의 증분 카운터가 '?'로 전달되었는지 확인하는 방법은 무엇입니까? 쿼리의 매개 변수?

+0

매개 변수에 전달하는 값은 무엇입니까? 4? –

+0

설정 파일에서 로그인 시도를 '3'으로 정의합니다. –

+0

어떻게해야합니까? 대신 쿼리 변경, 자바에서 카운터 + 1 분석을 수행하고 다음이 쿼리를 전달할 것인가? 이와 같은 –

답변

0

분명히 MySQL은 비교 값 COUNTER의 업데이트 된 값을 사용하고 있으며 오라클은 그렇지 않습니다. (나는 MySQL에서 동작을 확인했으며, 단일 테이블 업데이트를 위해서는 MySQL documents it을 사용했다. 나는 오라클 복사본이 없다 .SQL 서버는 MySQL이하는 일을하지 않는다고 말할 수있다.)

아마 두 문으로 코드를 작성하는 것이 가장 안전합니다. COUNTER, 다음LOCKED을 개별적으로 업데이트합니다. (3 대신 설정 파일에서 4을 사용하십시오.)

+0

이 쿼리를 추가합니다 : 문을 = "업데이트를 MDB_APPLICATION_NODE_PR는 = COUNTER = COUNTER + 1는 어디에서 사용자 이름을 설정"> \t \t \t \t \t \t \t \t \t \t 문을 = "업데이트 MDB_APPLICATION_NODE_PR 세트가 잠겨 = 사건 때 COUNTER <? 다음 'f'그렇지 않으면 어디 끝나는 USERNAME =? "> –

+0

내가 맞습니까? 일부 기계 문제로 인해 테스트를 할 수 없습니다. –

관련 문제