0
MySQL에서 last_insert_id 및 관련 문제를 얻는 방법에 대한 게시물이 여러 개 있습니다. DBExpress와 관련된이 게시물을 찾았습니다. delphi dxExpress MySQL: invalid LAST_INSERT_ID valueDBExpress 및 mysql 마지막 삽입 ID
그러나 다음 게시물을 참고하면 메모 테이블에 메모를 삽입하는 데 도움이되지 않습니다.
TSQLQuery* tq = new TSQLQuery(NULL);
tq->SQLConnection = atdbDM->SQLConnection1;
stringstream q;
q <<"INSERT INTO note (created_by, note) VALUES ("<<1234<<", \'<none>\');";
q << "SELECT LAST_INSERT_ID() AS lastNoteID;";
tq->SQL->Add(q.str().c_str());
tq->Open();
int noteID = tq->FieldByName("lastNoteID")->AsInteger;
tq->Close();
열기()를 실행하면, 나는 예외가 얻을 : 내가 처음 삽입 문을 실행하면
'You have an error in your SQL syntax; Check the manual that correposnds to your MySQL server version for the right syntax to use near 'SELECT LAST_INSERT_ID... at line1'
을 개별적으로 SELECT 문, 나는 오류를 얻을 수 없지만, 반환 된 ID는 항상 0. 변경해야 할 사항을 아는 사람은 누구입니까? 나는 C++ Builder XE3을 사용하고있다.
LAST_INSERT_ID()는 성공적으로 삽입 된 마지막 삽입 된 ID입니다. 레코드가 삽입되거나 업데이트되지 않으면이 값은 변경되지 않습니다. MySQL 사이트에 대한 많은 토론. 데이터 필드에 의해 레코드를 찾은 다음 ID 필드를로드하고 LAST_INSERT_ID()를 신뢰하지 않습니다. –
여기의 문제는 LAST_INSERT_ID() 그 자체가 아닙니다. 문제는 DBExpress와 MySQL의 조합으로 위 쿼리가 유효하지 않다는 결론을 얻은 것 같습니다. id에 대해 0을 얻는 것은 종종 두 개의 다른 세션에 속하는 별도의 쿼리와 관련이있는 것처럼 보입니다. –