MySQL 5.7、8.0.12以前
5.7または8.0.12以降のMySQLは、列のデフォルト値としての関数または式の使用をサポートしていません。
https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html
別の方法は、トリガーを使用してBEFORE INSERT
を監視することです。 目的のテーブルの。
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 ;
これにより、INSERT
のデフォルト値が変更されます uuid()
へのステートメント 明示的に定義されていない限り、値。
MySQL8.0.13以降
MySQL8.0.13のリリース 式が括弧で囲まれている場合は、式をデフォルト値として使用できるようになりました。
例
https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html