I reported this bug report to Oracle: http://bugs.mysql.com/bug.php?id=79148 It is almost the same in MariaDB - but the error message is different, see SELECT VERSION(); -- 10.1.2-MariaDB-log CREATE TABLE `vc_test`.`t1`( `id` INT NOT NULL, `id3` INT AS ( id*3 ) VIRTUAL ); INSERT INTO `vc_test`.`t1` VALUES (1,3); -- retruns: Error Code: 1906 - The value specified for computed column 'id3' in table 't1' ignored SELECT * FROM t1; -- returns empty set So here the error message is that "value is ignored" (not that it is "not allowed"). It looks to me like somebody in MariaDB actually identified the problem, but forgot to finish things. The statement should succeed (maybe raise a warning), and the "specified value should be ignored" as the error message says, but what it in reality is not. What say?