为何无法向数据表的desc属性中插入值?
为什么用
desc作为字段名插入值会报错? 这是因为desc是SQL的保留关键字——它原本是用来做排序操作的(比如ORDER BY id DESC里的降序指令)。当你在INSERT语句里直接写desc当字段名时,数据库会把它当成SQL语法的一部分,而不是你定义的表字段,自然就会触发语法错误。
你之前用其他字段名没问题,就是因为那些名称不在SQL保留关键字列表里,数据库能正确识别成字段。
解决办法
- 最省心的方式就是改字段名,比如换成
description、desc_content这类不会和关键字冲突的名称,这也是行业里的常规做法。 - 如果暂时不想改字段名,也可以用数据库对应的特殊符号把
desc包裹起来,明确告诉数据库这是个字段名而非关键字:- MySQL/MariaDB用反引号:
INSERT INTO table (name, size, `desc`) VALUES ("problem", "huge", "not able to import description value"); - PostgreSQL用双引号:
INSERT INTO table (name, size, "desc") VALUES ('problem', 'huge', 'not able to import description value'); - SQL Server用方括号:
INSERT INTO table (name, size, [desc]) VALUES ('problem', 'huge', 'not able to import description value');
- MySQL/MariaDB用反引号:
内容的提问来源于stack exchange,提问作者Filip Kaniok
相关产品推荐
相关产品推荐

