2012-09-04 5 views
0

모든 것이 고유 할 수 있도록 모든 ID를 보유하는 tickets 테이블을 생성했습니다. tickets 테이블은 다른 테이블에 삽입하기 전에 새 데이터와 함께 삽입됩니다. tickets 테이블에 생성 된 ID를 다른 테이블에 넣어야합니다.다른 테이블에 삽입 된 값을 삽입하십시오.

다음은 실행 방법입니다.

  1. 쿼리는 reftable1
  2. 트리거 삽입에 데이터를 삽입하고 자동은 첫 번째 쿼리의 데이터뿐만 아니라 table1에 다시 삽입 티켓에서 tickets
  3. ID에 ID를 증가.
  4. 다음은 계속 진행되지만 그 내용이 정리되어 있습니다.

여기까지 제가 지금까지 가지고 있습니다.

delimiter | 

CREATE TRIGGER status_ref BEFORE INSERT ON status 
FOR EACH ROW BEGIN 
INSERT INTO tickets SET ref = S; 

END; 
| 

delimiter ; 

답변

2

나는 당신이 당신의 번호 매기기 방식을 재고하는 것이 좋습니다 : 지금, 당신은 이중 연결과 같습니다 tickets 표는 ref를 통해 세부 사항을 참조하고 세부 테이블은 ID를 통해 tickets 테이블을 참조.

이것은 좋은 생각이 아닙니다.이 이중 링크를 비동기로 만드는 테이블 중 하나에 대한 최신 업데이트를 생각하십시오. 두 번째 숫자를 절대적으로 의미없는 것으로 렌더링하는 것을 허용하거나 허용합니다. JOIN에 사용할 필드에 따라 결과가 달라집니다.

하나의 선행 테이블로 번호 체계를 선택해야합니다. 개인적으로 세부 테이블에 tickets.ID 링크를 연결하는 요구 사항을 삭제하면됩니다.

편집

이이 ref 필드의 의미에 대한 같은 내 일부의 오해 보인다 - 다른 의견에 의해 판단,이 혼자가 아니었다. ref 필드는 참조의 유형에 대한 정보를 전달하는 경우

, 당신은 쉽게 옵션이 있습니다 : 세부 정보 테이블의 (자동 증분) ID 필드를 저장하는 tickets 테이블에 추가 필드 refID을 만들 수 있습니다.

ALTER TABLE tickets ADD COLUMN refID INT NOT NULL; 

-- the following only if you not already have it 
ALTER TABLE status ADD COLUMN ID INT AUTO_INCREMENT PRIMARY KEY; 

CREATE TRIGGER status_ref BEFORE INSERT ON status 
FOR EACH ROW BEGIN 
INSERT INTO tickets SET ref = S, refID=NEW.ID; 
END; 

이렇게하면 tickets 테이블에 세부 테이블 ID가 저장됩니다.

+0

듣기. 원래 질문은 정말 터무니없는 데이터베이스 디자인의 예입니다. –

+0

약간 이해합니다. '티켓 '의 개별 행을 다른 테이블의 세부 정보에 연결하려면 어떻게해야합니까? –

+0

@EugenRieck 내가 지금 생각한 방식은 심판이 ID가있는 테이블을 참조한다는 것입니다. 나는 그것이 그것을하는 어리석은 길을 추측하고있다. 어떻게해야합니까? –

관련 문제