2011-09-19 5 views
0

두 개 이상의 테이블에 데이터를 삽입하는 방법은 무엇입니까?PHP/MySQL 인서트 문제

현재이 트릭을 사용하고 있습니다. (구문이 맞다고 가정 해 봅시다.)

$Sql1 = "insert into user"; 
$Sql2 = "insert into files"; 
$Sql3 = "insert into messages"; 

query $Sql1 
query $$ql2 
query $Sql3 

그래서 저는 이것을 사용하고 있으며이를 최적화해야합니다.

또한 외래 키를 사용해야합니까? 하지만 phpmyadmin에서 어떻게하는지 모르겠습니다.

마지막으로 :

이것은 내가 원하는 것입니다.

"사용자"테이블에 데이터를 삽입 한 다음 자동으로 "메시지"및 "파일"테이블 도 사용자와 동일한 ID를 갖게됩니다. 그 이유는 내 3 개의 쿼리를 사용하여 암호.

도와주세요.

감사합니다.

는 myb

+3

왜 당신이 최적화해야합니까? 세 가지 쿼리가 실제 성능에 문제가 있습니까? –

답변

3

여러 쿼리을 사용하여도 관계 없다.

그러나 하나의 transaction에 3 개의 쿼리를 래핑해야합니다. 즉, 중 하나의 쿼리가 에 대해 실패하면의 모든 이전 쿼리의 결과가 롤백되어 데이터베이스가 일관된 상태를 유지할 수 있습니다.

참고 : MySQL의 MyISAM 테이블에서는 트랜잭션을 수행 할 수 없습니다. 또한 트랜잭션을 사용할 수 있으려면 PHP Mysqli (또는 PDO)을 사용해야합니다. (난 당신이 몇 가지 높은 수준의 데이터베이스 추상화 계층을 사용하여 하지있어 가정합니다.) 외래 키에 관한 질문에 관해서는

: 사용중인 경우 지금까지 내가 아는 한,이 차이가 없습니다 MyISAM은 외래 키의 명시 적 모델링을 지원하지 않기 때문에 데이터베이스의 테이블에 대한 MyISAM 엔진을 사용한다. 그러나 InnoDB와 같은 다른 테이블 엔진은 외래 키를 사용하여 "메시지가 항상 기존 사람과 연결되어야합니다"와 같은 특정 제약 조건을 확인할 수 있습니다.

여기에 외래 키에 대한 몇 가지 좋은 예입니다 http://www.postgresql.org/files/documentation/books/aw_pgsql/node131.html