0

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","BAR","FOO","CSC",100);
                ^
SQL state: 42703
Character: 105

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

4

2 回答 2

2

双引号用于引用列。使用单引号而不是双引号。

INSERT INTO Public."Student" ("student_id", "last_name", "first_name", "major", "credit_hours")
VALUES ('S201217','BAR','FOO','CSC',100);
于 2021-07-15T23:41:16.860 回答
0

数据库引擎认为这"S201217"是列名,做单引号,你会没事的

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

如果你用它来命名这样的字符串,例如你的表,你需要“”,因为它以大写 S 开头,它应该用双引号引起来,列名不需要它。或者例如,如果做选择

Select now() as 'Time now'

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

于 2021-07-16T03:01:07.920 回答