Bạn có thể tạo Trình kích hoạt CHÈN TRƯỚC và trình kích hoạt CẬP NHẬT TRƯỚC để đặt trường tên thành giá trị CONCAT_WS ('', first_name, middle_name, last_name) như sau ... nhưng đừng làm như vậy. Đó là một ý tưởng khủng khiếp. Không lưu trữ cột tên ở tất cả. Khi bạn muốn chọn tên, chỉ cần chọn CONCAT_WS ('', first_name, middle_name, last_name) AS full_name.
Lưu ý rằng CONCAT sẽ trả về null nếu bất kỳ giá trị nào bạn đang nối là null, vì vậy bạn có thể muốn sử dụng CONCAT_WS (với dấu phân tách) thay thế - nếu bất kỳ giá trị nào trong danh sách là null, nó sẽ chỉ bỏ qua giá trị đó và sử dụng những giá trị còn lại.
Trình kích hoạt của bạn có thể trông giống như thế này nếu bạn quyết định làm điều đó:
CREATE TRIGGER name_update BEFORE UPDATE ON member
FOR EACH ROW
BEGIN
SET NEW.name = CONCAT_WS(' ', NEW.first_name, NEW.middle_name, NEW.last_name);
END;
CREATE TRIGGER name_insert BEFORE INSERT ON member
FOR EACH ROW
BEGIN
SET NEW.name = CONCAT_WS(' ', NEW.first_name, NEW.middle_name, NEW.last_name);
END;
Tôi hy vọng điều đó sẽ hữu ích.