错误:关系“学生”已经存在

时间:2016-03-13 04:26:10

标签: sql postgresql datagrip

当我执行此查询时:

empty

我收到以下错误:

CREATE TABLE public.students (
  id INTEGER PRIMARY KEY NOT NULL DEFAULT NEXTVAL('students_id_seq'::regclass),
  first_name CHARACTER VARYING(20) NOT NULL,
  last_name CHARACTER VARYING(20) NOT NULL,
  major CHARACTER VARYING(20) NOT NULL
);
CREATE UNIQUE INDEX "Students_ID_uindex" ON students USING BTREE (id);

SELECT * FROM public.students;

我使用DataGrip生成表: enter image description here

知道我做错了什么吗?

enter image description here

更新:为了澄清我的问题,当我第一次使用新的表名运行代码时,我现在得到错误,但是当我再次运行它时,我得到了上述错误。如何解决这个问题?

enter image description here

2 个答案:

答案 0 :(得分:4)

您不能创建具有相同名称的更多表 - 因此如果已存在具有相同名称的表,则语句CREATE应该失败。

您之前可以运行语句DROP TABLE - 但请注意! - 它会删除包含所有数据的表格,并且撤消是不可能的。第二种选择是在IF NOT EXISTS语句中使用子句CREATE

DROP TABLE IF EXISTS foo;
CREATE TABLE foo(a int);

CREATE TABLE IF NOT EXISTS foo(a int);  

答案 1 :(得分:0)

您不需要使用索引名,只需允许PG自行创建即可:

CREATE INDEX ON public.students ("id");