簡體   English   中英

創建唯一索引似乎失敗了,但還是創建了?

[英]Creating unique index seems to fail, but is created anyway?

我正在創建一個唯一(多列)索引,但它失敗了,因為表中已經存在非唯一行。 然而,索引似乎無論如何都被創建了......

這是我正在使用的 SQL:

CREATE UNIQUE INDEX CONCURRENTLY IF NOT EXISTS company_by_code ON public.company USING BTREE("owner","org","code")

這導致來自 Postgresql 的以下響應:

ERROR:  could not create unique index "company_by_code"
DETAIL:  Key (owner, org, code)=(ABC, DEF, XYZ) is duplicated.
SQL state: 23505

然而,即使 CREATE 語句似乎出錯了,INDEX 似乎還是被創建了。

這是意料之中嗎?

這是在手冊中記錄的

如果在掃描表時出現問題,例如死鎖或唯一索引中的唯一性違規,CREATE INDEX 命令將失敗,但會留下“無效”索引。 出於查詢目的,該索引將被忽略,因為它可能不完整; 但是它仍然會消耗更新開銷。 psql \\d命令將報告這樣的索引為 INVALID

如果您不想要這種行為,請不要使用CONCURRENTLY

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM