>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 외래 키에 종속되는 시퀀스 열을 구현하는 방법은 무엇입니까?

MySQL에서 외래 키에 종속되는 시퀀스 열을 구현하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-15 03:02:02320검색

How to Implement a Sequence Column Dependent on a Foreign Key in MySQL?

MySQL: 외부 필드에 의존하는 시퀀스 열 설정

데이터베이스 관리 영역에서는 때때로 기존 필드를 수정하는 것이 필수적입니다. 새로운 데이터 요구 사항을 수용하기 위한 구조입니다. 특정 외래 키를 기반으로 레코드에 일련 번호를 할당해야 하는 경우가 여기에 해당합니다.

ID, ACCOUNT 및 some_other_stuff 열이 있는 테이블을 생각해 보세요. 목표는 다음과 같이 각 ACCOUNT 값에 대해 고유하게 증가하는 새로운 열인 SEQ를 도입하는 것입니다.

ID     ACCOUNT     SEQ     some_other_stuff
1      1           1       ...
2      1           2       ...
3      1           3       ...
4      2           1       ...
5      2           2       ...
6      1           4       ...

SQL 기반 솔루션:

MySQL 데이터 조작 이벤트 시 미리 정의된 작업을 자동으로 실행하는 강력한 메커니즘인 트리거를 제공합니다. 이 경우 레코드 삽입 중에 트리거를 사용하여 SEQ 열을 적절한 값으로 채울 수 있습니다. 트리거 코드:

CREATE TRIGGER trg_mytable_bi
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
      DECLARE nseq INT;
      SELECT COALESCE(MAX(seq), 0) + 1
      INTO nseq
      FROM mytable
      WHERE account = NEW.account;
      SET NEW.seq = nseq;
END;

분석:

  • 트리거 trg_mytable_bi는 mytable에 대한 각 INSERT 작업 전에 호출됩니다.
  • 내부 트리거, nseq는 정수로 선언됩니다.
  • 하위 쿼리는 일치하는 계정의 최대 seq 값을 가져오고 여기에 1을 더하여 효과적으로 다음 시퀀스 번호를 생성합니다. 이 값은 nseq에 저장됩니다.
  • 마지막으로 NEW.seq(새 레코드의 seq 값)가 nseq로 설정되어 올바른 순서가 보장됩니다.

위 내용은 MySQL에서 외래 키에 종속되는 시퀀스 열을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.