2012-06-29 2 views
1

저는 SQL을 처음 접했지만 꽤 복잡한 쿼리를 작성하려고했지만 처음 부분에서는 실패했습니다. 자동으로 ID를 증가시키는 테이블에 대한 새로운 행을 생성하고 즉시 ID를 추출하여 쿼리를 더 아래로 사용해야합니다. 이것을 시도하고 이해하기 위해 몇 시간 씩 인터넷 검색을 해 왔지만 작동시키지 못하는 것 같습니다. 다음은 오프닝 비트 (그것에 실패하는 것) :DECLARE 및 임시 변수가 포함 된 SQL 쿼리

DECLARE @point1ID; 
INSERT INTO points SET 
pointName = "$pointName1", 
street = "$street1", 
town = "$town1", 
city = "$city1", 
zip = "XXX", 
country = "$country1", 
pointDescription = "$pointDescription1"; 
SELECT @point1ID = scope_identity(); 

나중에 사용할 수 있도록 I, 즉 point1ID @ 변수에 방금 삽입 한 행의 ID를 넣어 것이라고 기대했다 동일한 TRANSACTION/COMMIT 블록에 있습니다. 여기서 내가 뭘 잘못하고 있니?

감사합니다.

+0

왜 PHP 변수가 쿼리에 있습니까? 이 쿼리가 PHP (또는 다른 언어)에 의해 수행되고 있습니까? – Palladium

+0

예, PHP 스크립트의 일부입니다. 그게 효과가 있니? DECLARE 비트 (첫 번째 행과 마지막 행)를 제거하면 쿼리가 잘 실행되어 행을 테이블에 추가합니다. 하지만 나머지 쿼리에는 그냥 입력 한 행의 ID가 필요합니다. – kinkersnick

+0

당신은 믿지 않을 것입니다. 내 대답을 보라. – Palladium

답변

0

는 다음 자동 증가 ID를 얻을 수

$insert_id = mysql_insert_id(); 

를 사용하여 INSERT를 수행, PHP에서 쿼리를 사용하고있는 점을 감안.

+0

놀라운. 너무 단순합니다. 정말 고맙습니다. – kinkersnick

+0

놀라워요 - 정말 고마워요. 나는 분명히 배울 것이 많다. – kinkersnick

+0

문제 없습니다. 프로그램 코딩 즐기기. – Palladium

0
당신이 삽입 된 마지막 AUTO_INCREMENT ID에 액세스 할 수 있습니다

나는 MySQL의 콘솔 :

SET @lastid = LAST_INSERT_ID(); 

내가 이미 말했듯이 : 당신이 나중에 사용하기 위해 변수에이 정보를 저장하려는 경우

SELECT LAST_INSERT_ID(); 

AUTO_INCREMENT 컬럼이있는 테이블에서만 작동합니다. 또한이 값은 서버 측에서만 유지되며이 연결에 대해서만 유지됩니다. AUTO_INCREMENT 컬럼을 특정 비 고유 값으로 설정하면이 값은 갱신되지 않습니다.

+0

감사합니다. 알고 매우 유용합니다. – kinkersnick