MySQL 삽입에서 문자열을 자동 증가 기본 키와 연결
MySQL 데이터베이스에 데이터를 삽입할 때 자동 증가 기본 키 ID가 있는 문자열을 사용하여 고유 식별자를 생성합니다.
다음 사용자 테이블을 고려하세요.
CREATE TABLE users ( user_id INT NOT NULL AUTO_INCREMENT, username VARCHAR(255) NOT NULL, PRIMARY KEY (user_id) );
사용자 이름 열을 문자열 접두사(예: , 'user') 뒤에 자동으로 증가하는 user_id가 옵니다. 그러나 user_id 값은 삽입 작업이 끝날 때까지 생성되지 않습니다.
BEFORE INSERT 트리거를 사용하여 단일 문으로 이를 수행하려는 시도는 user_id 값을 아직 사용할 수 없기 때문에 불가능합니다. 마찬가지로 AFTER INSERT 트리거를 사용하여 사용자 이름 필드를 업데이트하는 것은 허용되지 않습니다.
해결책 1: 삽입 및 업데이트
한 가지 접근 방식은 삽입 작업을 먼저 수행하는 것입니다. 그런 다음 즉시 UPDATE 문을 실행하여 문자열과 user_id를 연결합니다. 이 작업은 PHP에서 다음과 같이 수행할 수 있습니다.
// Insert user data $stmt = $mysqli->prepare(...); $stmt->bind_param(...); $stmt->execute(); // Get the auto-incremented user ID $user_id = $mysqli->insert_id; // Update username $update_stmt = $mysqli->prepare("UPDATE users SET username = 'user$user_id' WHERE user_id = ?"); $update_stmt->bind_param("i", $user_id); $update_stmt->execute();
해결책 2: 사용자 정의 INSERT 쿼리
user_id가 자동 증가 값이 아닌 경우 다음을 삽입할 수 있습니다. 원래 INSERT 문에 연결된 사용자 이름입니다. 이렇게 하려면 연결을 포함하도록 SQL 쿼리를 수정해야 합니다.
INSERT INTO users (username, ...) VALUES ('user' || ?, ...);
이 쿼리에서 자리 표시자 ? 삽입 중에 지정한 user_id가 포함된 PHP 변수를 사용합니다.
생성 열(MySQL 5.7 이상)
MySQL 5.7에서는 생성 열을 도입했습니다. 표현식을 기반으로 하는 열입니다. 그러나 자동 증가 열을 참조하는 생성 열을 정의하는 것은 불가능합니다.
위 내용은 MySQL 삽입에서 자동 증가 기본 키와 문자열을 연결하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!