我正在嘗試在TablePlus上運行 INSERT 查詢。
INSERT INTO minutes_clone (date, ticker, "lastTime", "openTime", date_time, group_type, "totalVolume", "totalPrice", "totalTrades")
VALUES('2021-07-02', 'YELP', '00:15:00', '00:00:00', '2021-07-02 00:00:00', 15, 0, 0, 0)
ON CONFLICT ON CONSTRAINT minutes_clone_stick_tickers_unique
DO UPDATE SET "lastTime" = '00:15:00', "openTime" = '00:00:00', date_time = '2021-07-02 00:00:00', "totalVolume" = 0, "totalPrice" = 0, "totalTrades" = 0
RETURNING id;
而不是查詢發送成功訊息,我收到一個錯誤:表“minutes_clone”的約束“minutes_clone_stick_tickers_unique”不存在。
這是我的表結構的影像。
復制:
CREATE TABLE "public"."minutes_clone" (
"ticker" varchar NOT NULL,
"totalTrades" int4 NOT NULL,
"totalPrice" numeric NOT NULL,
"totalVolume" int4,
"lastTime" time NOT NULL,
"openTime" time NOT NULL,
"date" date NOT NULL,
"group_type" int4 NOT NULL DEFAULT 1,
"date_time" timestamp,
"parent_id" int4,
"id" int4 NOT NULL DEFAULT nextval('id_seq'::regclass),
PRIMARY KEY ("id")
);
CREATE INDEX "minutes_clone_ticker_group_date_index" ON "public"."minutes_clone" USING BTREE ("ticker","group_type","date_time");
CREATE UNIQUE INDEX "minutes_clone_stick_tickers_unique" ON "public"."minutes_clone" USING BTREE ("date","ticker","openTime","group_type");
CREATE INDEX "minutes_clone_date_time_index" ON "public"."minutes_clone" USING BTREE ("date_time");
我嘗試了很多事情,比如洗掉ON CONSTRAINT并洗掉并重新添加約束,但一直無法解決這個問題。任何解決方案?
uj5u.com熱心網友回復:
您正在混淆索引和約束。這是可以理解的,因為唯一約束總是由??唯一索引實作,但它們仍然不一樣。
為了使您的陳述句起作用,您需要在當前擁有的索引之上添加一個唯一約束。您可以使用以下方法創建它:
ALTER TABLE public.minutes_clone
ADD UNIQUE USING INDEX minutes_clone_stick_tickers_unique;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/340196.html
標籤:sql PostgreSQL
上一篇:如何遞回檢索可用城鎮?
