외래 키 값을 기반으로 MySQL에서 연속 열을 자동으로 생성하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-11-14 18:20:02
원래의
325명이 탐색했습니다.

How to Automatically Generate Sequential Columns in MySQL Based on Foreign Key Values?

MySQL에서 시퀀스 기반 열 생성

기존 데이터베이스 시스템에서는 추가 정보를 추적하기 위해 새 열을 추가해야 하는 경우가 많습니다. 이 정보가 특정 레코드에 대해 순차적이어야 하는 경우 SQL 트리거가 효율적인 솔루션을 제공할 수 있습니다.

대상: 외부 ID를 기반으로 시퀀스 열 추가

다음과 같은 데이터가 포함된 테이블:

ID     ACCOUNT     some_other_stuff
1      1           ...
2      1           ...
3      1           ...
4      2           ...
5      2           ...
6      1           ...
로그인 후 복사

그리고 각 '계정'에 대해 별도로 증가하는 'sequenceid' 열을 추가하여 결과는 다음과 같습니다.

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 트리거 사용

SQL에서 이를 자동으로 수행하려면 테이블에 대한 각 INSERT 작업 전에 실행되는 트리거를 생성할 수 있습니다.

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;
로그인 후 복사

이 트리거는 ' 지역 변수 '를 초기화합니다. nseq'는 다음 순차 값을 보유합니다. 테이블을 쿼리하여 현재 '계정'에 대한 최대 기존 시퀀스 번호를 찾고 1을 추가하여 다음 시퀀스 값을 생성합니다. 그런 다음 이 값은 새로 삽입된 행에 대한 'seq' 값으로 설정됩니다.

트리거를 사용하면 삽입 프로세스 중에 시퀀스 번호가 자동으로 생성되고 증가되므로 각 계정이 고유한 시퀀스를 갖게 됩니다. 숫자의. 이 접근 방식을 사용하면 시퀀스를 유지하기 위해 수동 업데이트나 복잡한 PHP 스크립트가 필요하지 않습니다.

위 내용은 외래 키 값을 기반으로 MySQL에서 연속 열을 자동으로 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿