2014-05-20 12 views
0

내 문제는 설명하기 쉽습니다. pure-ftp의 설정 파일에는 암호를 읽을 수있는 INSERT 문 하나만 있습니다. 다음과 같습니다.SELECT 문에서 mysql을 업데이트하십시오.

SELECT password FROM ftpuser WHERE userid = "\L" 

"\ L"은 사용자 ID의 자리 표시 자입니다. 완벽하게 작동하지만 ftp-server에 대한 액세스를 계산해야합니다. 이 테이블에는 "액세스 됨"이라는 필드가 있습니다. 그래서이 SQL도 실행해야합니다 :

UPDATE ftpuser SET accessed = accessed + 1 WHERE userid = "\L" 

결과로 "password"와 함께이 두 문장을 하나로 가져 오는 방법이 있습니까? 또는 순수 ftp에서 액세스를 트리거하는 다른 방법이 있습니까? 고마워요!

세바스찬

+1

질문을 편집하여 샘플 데이터와 원하는 결과를 보여주십시오. 하지만 일반적으로 데이터 * 및 * 반환 값은 업데이트 할 수 없습니다. 그것은 다른 기능입니다. –

+0

아이디어는 순수 ftp에 login-datas에 사용되는 mysql의 마지막 액세스를 기록하는 기능을 제공하려고한다는 것입니다. 유일한 방법은 사용자가 암호를 읽는 Select-Statement에 로그 업데이트를 가져 오는 것입니다. 두 문장은 자리 표시 자일 뿐이며, 다른 문장으로 완성 될 수 있습니다. 그러나 업데이트를 연결하고 내가 원하는대로 선택하는 방법이 없다. – user3656400

답변

1

는 다음 테이블은 트랜잭션 엔진 (예 : 이노)를 사용하여 저장됩니다 제공 자성을 유지의 문제, 당신은 locking read 기호가있는 트랜잭션 (transaction) 전체를 포장 할 수 있다면 :

START TRANSACTION; 
SELECT password FROM ftpuser WHERE userid = '\L' FOR UPDATE; 
UPDATE ftpuser SET accessed = accessed + 1 WHERE userid = '\L'; 
COMMIT; 
+0

'FOR UPDATE'가 정말로 필요합니까? 'UPDATE' 문은 자체적 인 락을 배치 할 것이고'SELECT'에 대한 병행성에 문제가 없을 것입니다. –

+0

@MarcusAdams : 비즈니스 논리에 의존하지 않습니까? 예를 들어,'passwords'가 변경되었을 때'액세스'가 재설정되면 ... – eggyal

관련 문제