2010-03-01 4 views
0

MySQL 데이터 테이블에 외래 키와 기본 키를 사용할 때 문제가 있습니다.mysql : simulatenous 삽입

이제 두 개의 테이블 p1, p2가 있습니다.

create table p1(
    id int(10) not null auto_increment, 
    type_id int(10) default 1, 
    name varchar(20), 
    primary key(id, type_id) 
    ); 
create table p2(
    id int(10) not null, 
    type_id int(10) not null, 
    name varchar(20), 
    primary key(id, type_id) 
    ); 
alter table p1 add foreign key(id, type_id) references p2(id, type_id) on delete cascade; 

제가 P2에 값을 삽입

, 난 (P1)이 P1에 삽입 TYPE_ID, 숫자 ID로 업데이트하고 싶다.

insert into p2(name) values('p2'); 
set @temp = 0; 
select last_insert_id() into @temp; 
insert into p1(id, type_id, name) values(@temp, name); 

어떻게하면됩니까?

답변

0

MyISAM 테이블 - noway. 삽입은 항상 순차적으로 수행됩니다. InnoDb에서는 - 쓰레드를 사용하여 질의를 수행합니다.

아니면 트랜잭션에서 처리해야합니까?

+0

트랜잭션을 사용하려고했지만 실패했습니다. 어디서 잘못되었는지 확인할 수 있습니까? –

1

p2와 p3에 triggers을 설정할 수 있습니다.

또한 삽입 쿼리가 손상되었습니다. 세 개의 열을 지정하지만 두 개의 값만 지정하면됩니다.

+0

@jasonbar, 왜냐하면 나는 어떻게 테이블 p2에 3 개의 값을 넣을지 모르겠다. –