Không. Giá trị của mệnh đề DEFAULT phải là một hằng số. (Một ngoại lệ đối với quy tắc này là việc sử dụng CURRENT_TIMESTAMP
làm giá trị mặc định cho TIMESTAMP
cột.)
Thay vào đó, bạn có thể sử dụng TRIGGER để đặt giá trị cho cột khi một hàng được chèn hoặc cập nhật.
Ví dụ:trong trình kích hoạt CHÈN TRƯỚC CHO TỪNG ROW, bạn có thể thực hiện tính toán từ các giá trị được cung cấp cho các cột khác và / hoặc dữ liệu truy vấn từ các bảng khác.
CHỈNH SỬA
Đối với ví dụ được đưa ra trong CHỈNH SỬA của câu hỏi, ví dụ về điểm bắt đầu cho định nghĩa trình kích hoạt:
CREATE TRIGGER mytable_bi
BEFORE INSERT ON mytable
FOR EACH ROW
BEGIN
SET NEW.percentage = (100.0 * NEW.marks) / NULLIF(NEW.total_marks,0);
END