데이터베이스 개선: MySQL에서 외래 키 관계를 기반으로 시퀀스 열 생성
MySQL과 같은 관계형 데이터베이스에서는 시퀀스 번호를 캡처하는 테이블의 열입니다. 시퀀스가 다른 열의 특정 관련 값에 대해 고유해야 하는 경우 이는 문제가 될 수 있습니다. 이 문제에 대한 해결책을 살펴보겠습니다.
문제 설명
다음 구조를 가진 데이터베이스 테이블의 예를 고려해 보세요.
CREATE TABLE mytable ( ID INT NOT NULL, ACCOUNT INT NOT NULL, some_other_stuff TEXT );
목표는 각 개별 계정에 고유한 시퀀스 번호를 할당하는 seq 열을 추가하는 것입니다. value.
SQL 솔루션
이 문제에 대한 훌륭한 해결책 중 하나는 MySQL에서 트리거를 활용하는 것입니다. 트리거는 테이블에서 특정 이벤트가 발생할 때 사전 정의된 일련의 작업을 자동으로 실행하는 데이터베이스 개체입니다.
트리거 생성
트리거를 생성하려면 시퀀스 열을 생성하려면 다음 SQL 문을 실행합니다.
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;
트리거 방법 작동
이 트리거는 각 행이 mytable에 삽입되기 전에 실행됩니다. 다음 방법으로 행의 새 시퀀스 번호를 계산합니다.
예
초기 테이블 데이터를 고려하세요.
ID | ACCOUNT | some_other_stuff |
---|---|---|
1 | 1 | ... |
2 | 1 | ... |
3 | 1 | ... |
4 | 2 | ... |
5 | 2 | ... |
6 | 1 | ... |
ACCOUNT = 1인 테이블에 새 행 삽입 다음의 seq 값을 생성합니다. 4.
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에서 외래 키 관계를 기반으로 고유 시퀀스 열을 생성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!