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 중국어 웹사이트의 기타 관련 기사를 참조하세요!