MySQL Error number: 3943; Symbol: ER_TABLE_VALUE_CONSTRUCTOR_CANNOT_HAVE_DEFAULT; SQLSTATE: HY000

文档解释

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’);

你可能感兴趣的