필드 값을 ID로 설정하는 MySQL 트리거
MySQL에서는 필드를 ID 값으로 직접 업데이트할 수 없습니다. 트리거를 사용합니다. 이는 행이 삽입, 업데이트 또는 삭제되기 전이나 후에 자동 증가 ID가 생성되기 전에 트리거가 실행되기 때문입니다.
원하는 동작을 달성하려면 다음 해결 방법을 사용할 수 있습니다.
트리거에 대한 MySQL 문은 다음과 같습니다.
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
안타깝게도 이 트리거는 작동하지 않습니다. BEFORE INSERT 단계에서 자동 생성된 ID 값이 아직 생성되지 않았기 때문에 원하는 동작을 수행합니다. 따라서 group_id가 null인 경우 기본값은 항상 0인 NEW.id가 됩니다.
AFTER INSERT 단계에서 실행되도록 트리거를 변경해도 행 뒤의 열 값을 수정할 수 없으므로 작동하지 않습니다.
유일한 해결 방법은 삽입을 수행한 후 group_id 값이 설정되지 않은 경우 즉시 업데이트하는 것입니다.
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
위 내용은 트리거를 사용하여 MySQL에서 필드 값을 해당 ID로 설정하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!