PostgreSQL 无法向表中插入数据列不存在

问题描述

Postgresql 13,pgAdmin 4。

我有一个包含以下列的“学生”表:

  • student_id(文本,主键)
  • 姓氏(文本)
  • 名字(文本)
  • 主要(文本)
  • credit_hours (int)

我只是想将另一个学生添加到此表中,我正在尝试使用下面的查询来完成

INSERT INTO Public."Student" ("student_id","last_name","first_name","major","credit_hours")
VALUES ("S201217","BAR","FOO","CSC",100);

但是当我运行这个查询时,我得到了这个输出

ERROR:  column "S201217" does not exist
LINE 2: VALUES ("S201217",100);
                ^
sql state: 42703
Character: 105

对于这样一个基本错误,我真的在这里遗漏了什么,为什么这个查询不能添加一行?

解决方法

双引号用于引用列。使用单引号代替双引号。

INSERT INTO Public."Student" ("student_id","last_name","first_name","major","credit_hours")
VALUES ('S201217','BAR','FOO','CSC',100);
,

DB 引擎认为这个 "S201217" 是列名,加上单引号就可以了

INSERT INTO Public."Student" (student_id,last_name,first_name,major,credit_hours)
VALUES ('S201217',100);

如果您使用它来命名此类具有大写字母的字符串,则您需要“”,例如,您的表,因为它以大写字母 S 开头,所以应该用双引号括起来,列名不需要它。或者例如,如果执行 select

Select now() as 'Time now'

因为别名有空字符串和大写字母,你需要在“”中包含