我正在尝试使用此查询创建表:
CREATE TABLE "real_estate_static" (
"uid" SERIAL NOT NULL DEFAULT NEXTVAL("real_estate_uid_seq") PRIMARY KEY,
"source_id" JSON NOT NULL,
"source_url" TEXT NOT NULL,
"created_at" TIMESTAMP NULL DEFAULT NULL,
"address" TEXT NOT NULL,
"city" TEXT NOT NULL,
"state" TEXT NOT NULL,
"zip" INTEGER NULL DEFAULT NULL,
"latitude" NUMERIC NULL DEFAULT NULL,
"longitude" NUMERIC NULL DEFAULT NULL,
"type" TEXT NOT NULL,
"category" TEXT NOT NULL,
"square_ft" NUMERIC NULL DEFAULT NULL,
"acres" NUMERIC NULL DEFAULT NULL,
"images" JSON NULL DEFAULT NULL
);
错误:
multiple default values specified for column "uid" of table "real_estate_static"
我认为这可能是由于参数NOT NULL引起的错误,但是删除它并没有改变任何内容。我在Internet上发现的大多数此类错误问题都是由Django或其他ORM引起的,但这不是我的情况,因此我无法解决此问题。
serial
不是实型,而是包含默认值的别名。
数据类型smallserial,serial和bigserial不是真实类型,而仅仅是创建唯一标识符列的符号方便(类似于某些其他数据库支持的AUTO_INCREMENT属性)。在当前的实现中,指定:
CREATE TABLE tablename ( colname SERIAL );
等效于指定:
CREATE SEQUENCE tablename_colname_seq AS integer; CREATE TABLE tablename ( colname integer NOT NULL DEFAULT nextval('tablename_colname_seq') ); ALTER SEQUENCE tablename_colname_seq OWNED BY tablename.colname;
所以,所有的nextval
和not null
是不必要的。serial
为你做。
"uid" SERIAL PRIMARY KEY,
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句