2012-10-16 2 views
0

두 개의 테이블이 있습니다.MySQL에서 조건부 INSERT하는 방법?

자산 테이블

| AID | NAME | 
    | 1234 | item1| 

항목 테이블

| BID | ITEM | 
    |  |  | 

질문 :이 항목의 테이블에 데이터를 삽입 할 방법은 동일한 데이터 나는 자산 테이블에 삽입 하시겠습니까? 또는 심지어 가능합니까? 자산 테이블 AID 값 (1234)이있는 경우에만 아이템 테이블 BID 값 (1234)을 삽입 할 수 있습니다. 나는이 일을 시도 :

  1. INSERT INTO '항목' 'item'.BID ='assets'.AID ('BID') VALUES (1234)
+0

'ITEM' 값으로 삽입 할 내용은 무엇입니까? 'item1'' 문자열? 또한이 'WHERE'체크가 단일 작업에만 적용 되었습니까, 아니면 전체적으로 'assets' 테이블을 복사하겠습니까? – raina77ow

답변

0

당신이 할 수있는 WHEREINSERT 문과 함께 사용하지 마십시오. mysql은 지원하지 않습니다. WHERE 부분 만 제거하면 올바르게 작동합니다.

그러나 데이터가 다른 테이블 (또는 하위 쿼리)에 존재하는지 여부를 별도로 확인해야합니다.

+0

하지만 내가 원하는 것은 AID (기본 키) 값이 자산 테이블에있는 경우에만 동일한 데이터를 항목 테이블에 삽입 할 수 있다는 것입니다. 두 테이블을 사용하여 검사하는 방법에 대해서는 잘 모릅니다. –

0

동적 SQL을 사용하여 나중에 실행할 수는 있지만보기가 어렵습니다. IF 조건부 만 수행하면됩니다. 레코드가 Value에 있으면 삽입을 실행하고, 그렇지 않으면 실행하지 마십시오. 이 같은

시도 뭔가 : 여러 일치를 찾을 수 있으며, 하나 이상의 행을 삽입하지 않으려면 SELECT에서

(SELECT Count(*) FROM Value WHERE BID = '1234') > 0 
    --your insert-- 
1
INSERT INTO item (BID) SELECT assets.aid FROM assets WHERE aid = 1234; 

사용이 DISTINCT.

또한 데이터베이스의 삽입을 제한하려는 경우 외래 키 제약 조건을 사용하십시오. 일단 그렇게하면 조건부로 삽입 할 필요가 없습니다. 보조 테이블에 보조 도구가없는 경우 데이터베이스를 삽입하고 시도를 실패하게하십시오.

관련 문제