当我执行此查询时:
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;
知道我做错了什么吗?
更新:为了澄清我的问题,当我第一次使用新的表名运行代码时,我现在得到错误,但是当我再次运行它时,我得到了上述错误。如何解决这个问题?
答案 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");