Explicit Default Handling as of MySQL 8.0.13 •This produces an error (literal default not specified as expression): •Literals, built-in functions (both deterministic and nondeterministic), and operators are permitted. •Subqueries, parameters, variables, stored functions, and loadable functions are not permitted. •An expression default value cannot depend on a column that has the  AUTO_INCREMENT  attribute. •An expression default value for one column can refer to other table columns, with the exception that references to generated columns or columns with expression default values must be to columns that occur earlier in the table definition. That is, expression default values cannot contain forward references to generated columns or columns with expression default values. CREATE TABLE t2 (b BLOB DEFAULT ’abc’); Expression default values must adhere to the following rules. An error occurs if an expression contains disallowed constructs. The ordering constraint also applies to the use of  ALTER TABLE  to reorder table columns. If the resulting table would have an expression default value that contains a forward reference to a generated column or column with an expression default value, the statement fails. Note If any component of an expression default value depends on the SQL mode, different results may occur for different uses of the table unless the SQL mode is the same during all uses. For  CREATE TABLE ... LIKE  and  CREATE TABLE ... SELECT , the destination table preserves expression default values from the original table. If an expression default value refers to a nondeterministic function, any statement that causes the expression to be evaluated is unsafe for statement-based replication. This includes statements such as INSERT  and  UPDATE . In this situation, if binary logging is disabled, the statement is executed as normal. If binary logging is enabled and  binlog_format  is set to  STATEMENT , the statement is logged and executed but a warning message is written to the error log, because replication slaves might diverge. When  binlog_format  is set to  MIXED  or  ROW , the statement is executed as normal. When inserting a new row, the default value for a column with an expression default can be inserted either by omitting the column name or by specifying the column as  DEFAULT  (just as for columns with literal defaults): mysql>  CREATE TABLE t4 (uid BINARY(16) DEFAULT (UUID_TO_BIN(UUID()))); mysql>  INSERT INTO t4 () VALUES(); mysql>  INSERT INTO t4 () VALUES(DEFAULT); mysql>  SELECT BIN_TO_UUID(uid) AS uid FROM t4; +--------------------------------------+ | uid | +--------------------------------------+ | f1109174-94c9-11e8-971d-3bf1095aa633 | | f110cf9a-94c9-11e8-971d-3bf1095aa633 | +--------------------------------------+ However, the use of  DEFAULT( col_name )  to specify the default value for a named column is permitted only for columns that have a literal default value, not for columns that have an expression default value. Not all storage engines permit expression default values. For those that do not, an ER_UNSUPPORTED_ACTION_ON_DEFAULT_VAL_GENERATED  error occurs. 2085