https://dev.mysql.com /doc/refman/5.7/en/create-table-generated-columns.html
Điều hợp lý là biểu thức cho cột đã tạo có thể chỉ các cột trong cùng một hàng. Cột được tạo không thể sử dụng truy vấn con hoặc tham chiếu các bảng khác hoặc các hàm có đầu ra không xác định.
Giả sử các cột được tạo đã hỗ trợ tham chiếu bảng chéo. Đặc biệt xem xét trường hợp của STORED
các cột được tạo.
Nếu bạn cập nhật một bảng, MySQL cũng sẽ phải cập nhật bất kỳ tham chiếu nào trong các cột được tạo ở nơi khác trong cơ sở dữ liệu, nếu chúng tham chiếu đến hàng bạn đã cập nhật. Sẽ rất phức tạp và tốn kém cho MySQL để theo dõi tất cả các tham chiếu đó.
Sau đó, hãy xem xét thêm các tham chiếu gián tiếp thông qua các chức năng được lưu trữ.
Sau đó, hãy xem xét rằng bản cập nhật của bạn là một bảng InnoDB trong một giao dịch, nhưng cột được tạo có thể nằm trong một bảng không phải giao dịch (MyISAM, MEMORY, ARCHIVE, v.v.). Nội dung cập nhật của bạn có được phản ánh trong các cột đã tạo đó khi bạn thực hiện không? Điều gì sẽ xảy ra nếu bạn quay trở lại? Bản cập nhật của bạn có nên được phản ánh vào thời điểm bạn cam kết không? Sau đó, MySQL nên "xếp hàng" các thay đổi như thế nào để áp dụng cho các bảng đó? Điều gì sẽ xảy ra nếu nhiều giao dịch cam kết cập nhật ảnh hưởng đến tham chiếu cột đã tạo? Cái nào sẽ thắng, cái nào áp dụng thay đổi cuối cùng hay cái nào cam kết cuối cùng?
Vì những lý do này, không thực tế hoặc hiệu quả khi cho phép các cột được tạo tham chiếu đến bất kỳ thứ gì khác ngoài các cột của cùng một hàng trong cùng một bảng.