CREATE TABLE Statement For the first two  INSERT  statements, the  VALUES()  list must provide a value for each visible column and no invisible column. For the third  INSERT  statement, the  VALUES()  list must provide the same number of values as the number of named columns. For  LOAD DATA  and  LOAD XML , implicit default assignment occurs with a missing column list or a nonempty column list that does not include the invisible column. Input rows should not include a value for the invisible column. To assign a value other than the implicit default for the preceding statements, explicitly name the invisible column in the column list and provide a value for it. INSERT INTO ... SELECT *  and  REPLACE INTO ... SELECT *  do not include invisible columns because  *  does not include invisible columns. Implicit default assignment occurs as described previously. For statements that insert or ignore new rows, or that replace or modify existing rows, based on values in a  PRIMARY KEY  or  UNIQUE  index, MySQL treats invisible columns the same as visible columns: Invisible columns participate in key value comparisons. Specifically, if a new row has the same value as an existing row for a unique key value, these behaviors occur whether the index columns are visible or invisible: •With the  IGNORE  modifier,  INSERT ,  LOAD DATA , and  LOAD XML  ignore the new row. • REPLACE  replaces the existing row with the new row. With the  REPLACE  modifier,  LOAD DATA  and  LOAD XML  do the same. • INSERT ... ON DUPLICATE KEY UPDATE  updates the existing row. To update invisible columns for  UPDATE  statements, name them and assign a value, just as for visible columns. Information about whether a column is visible or invisible is available from the  EXTRA  column of the INFORMATION_SCHEMA.COLUMNS  table or  SHOW COLUMNS  output. For example: Columns are visible by default, so in that case,  EXTRA  displays no visibility information. For invisible columns,  EXTRA  displays  INVISIBLE . SHOW CREATE TABLE  displays invisible columns in the table definition, with the  INVISIBLE  keyword in a version-specific comment: 2593 Invisible Column Metadata mysql>  SHOW CREATE TABLE t1\G *************************** 1. row *************************** Table: t1 +------------+-------------+-----------+ | TABLE_NAME | COLUMN_NAME | EXTRA | +------------+-------------+-----------+ | t1 | i | | | t1 | j | | | t1 | k | INVISIBLE | +------------+-------------+-----------+ mysql>  SELECT TABLE_NAME, COLUMN_NAME, EXTRA FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = ’test’ AND TABLE_NAME = ’t1’; CREATE TABLE t1 (col1 INT, col2 INT INVISIBLE); INSERT INTO t1 VALUES(...); INSERT INTO t1 () VALUES(...); INSERT INTO t1 (col1) VALUES(...);