CREATE TABLE Statement • ENGINE_ATTRIBUTE  and  SECONDARY_ENGINE_ATTRIBUTE  options (available as of MySQL 8.0.21) are used to specify column attributes for primary and secondary storage engines. The options are reserved for future use. Permitted values are a string literal containing a valid  JSON  document or an empty string (’’). Invalid JSON  is rejected. ENGINE_ATTRIBUTE  and  SECONDARY_ENGINE_ATTRIBUTE  values can be repeated without error. In this case, the last specified value is used. ENGINE_ATTRIBUTE  and  SECONDARY_ENGINE_ATTRIBUTE  values are not checked by the server, nor are they cleared when the table’s storage engine is changed. For  NDB  tables, it is possible to specify whether the column is stored on disk or in memory by using a  STORAGE  clause.  STORAGE DISK  causes the column to be stored on disk, and  STORAGE MEMORY causes in-memory storage to be used. The  CREATE TABLE  statement used must still include a TABLESPACE  clause: CREATE TABLE t1 (c1 INT ENGINE_ATTRIBUTE=’{" key ":" value "}’); mysql>  CREATE TABLE t1 ( -> c1 INT STORAGE DISK, -> c2 INT STORAGE MEMORY ->  ) ENGINE NDB; ERROR 1005 (HY000): Can’t create table ’c.t1’ (errno: 140) mysql>  CREATE TABLE t1 ( -> c1 INT STORAGE DISK, -> c2 INT STORAGE MEMORY ->  ) TABLESPACE ts_1 ENGINE NDB; Query OK, 0 rows affected (1.06 sec) • STORAGE • GENERATED ALWAYS • CONSTRAINT  symbol Indexes, Foreign Keys, and CHECK Constraints 2548 The  CONSTRAINT  symbol  clause may be given to name a constraint. If the clause is not given, or a  symbol  is not included following the  CONSTRAINT  keyword, MySQL automatically generates a constraint name, with the exception noted below. The  symbol  value, if used, must be unique per Several keywords apply to creation of indexes, foreign keys, and  CHECK  constraints. For general background in addition to the following descriptions, see Section 13.1.15, “CREATE INDEX Statement” , Section 13.1.20.5, “FOREIGN KEY Constraints” , and Section 13.1.20.6, “CHECK Constraints” . Stored generated columns can be indexed.  InnoDB  supports secondary indexes on virtual generated columns. See Section 13.1.20.9, “Secondary Indexes and Generated Columns” . Used to specify a generated column expression. For information about generated columns, see Section 13.1.20.8, “CREATE TABLE and Generated Columns” . The  STORAGE  clause has no effect on tables using storage engines other than  NDB . The  STORAGE keyword is supported only in the build of  mysqld  that is supplied with NDB Cluster; it is not recognized in any other version of MySQL, where any attempt to use the  STORAGE  keyword causes a syntax error. For  NDB  tables,  STORAGE DEFAULT  is equivalent to  STORAGE MEMORY .