MySQL 5.7, 8.0.12 trở lên
MySQL phiên bản 5.7 hoặc 8.0.12 không hỗ trợ sử dụng hàm hoặc biểu thức làm giá trị mặc định của cột.
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
Giải pháp thay thế sẽ là sử dụng trình kích hoạt để theo dõi BEFORE INSERT
của bảng mong muốn.
DELIMITER ;;
CREATE TRIGGER `foo_before_insert`
BEFORE INSERT ON `foo` FOR EACH ROW
BEGIN
IF new.id IS NULL THEN
SET new.id = uuid();
END IF;
END;;
DELIMITER ;
Điều này sẽ thay đổi giá trị mặc định của INSERT
câu lệnh cho uuid()
giá trị, trừ khi nó đã được xác định rõ ràng.
MySQL 8.0.13 và mới hơn
Với phát hành MySQL 8.0.13 một biểu thức hiện có thể được sử dụng làm giá trị mặc định, miễn là nó được đặt trong dấu ngoặc đơn.
Ví dụ db <> fiddle
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html