Error number: 3943; Symbol: ER_TABLE_VALUE_CONSTRUCTOR_CANNOT_HAVE_DEFAULT; SQLSTATE: HY000
Message: A VALUES clause cannot use DEFAULT values, unless used as a source in an INSERT statement.
。
错误说明:
ER_TABLE_VALUE_CONSTRUCTOR_CANNOT_HAVE_DEFAULT错误提示表值构造函数不能有默认值。当用户试图在SQLSELECT语句或者UPDATE语句的VALUES子句中用默认值构造表值构造函数时,就会报这个错误。
比如,数据库中有一个表user,字段信息如下:
+————-+———-+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+————-+———-+——+—–+———+——-+
| id | int(11) | NO | PRI | 0 | |
| name | char(50) | NO | | NULL | |
| address | char(50) | YES | | NULL | |
| phone | int(11) | YES | | NULL | |
+————-+———-+——+—–+———+——-+
假设我们使用VALUES子句来构造表值构造函数,例如:
INSERT INTO user VALUES(DEFAULT, ‘Andy’, ‘Taipei’, ‘1234567’);
这时会报ER_TABLE_VALUE_CONSTRUCTOR_CANNOT_HAVE_DEFAULT错误提示表值构造函数不能有默认值。
解决方法:
解决该错误的方法就是,只能用显式的值来构造表值构造函数,不能使用默认值。因此,正确的语句应为:
INSERT INTO user VALUES(0, ‘Andy’, ‘Taipei’, ‘1234567’);