我正在从MySQL切换到PostgreSQL,并尝试添加一个UNIQUE INDEX
。
我在MySql中运行的命令:
create UNIQUE index idx_friendship_userid_friend_id on Friendship(owner_id, friend_id);
我认为与PostgreSQL中的上述命令等效:
CREATE UNIQUE INDEX idx_friendship_userid_friend_id ON public."Friendship" USING btree (owner_id, friend_id);
两个命令是否等效?或者我做错了什么?
答案 0 :(得分:2)
这两个语句是等效的,但有一些警告:
"Friendship"
表示您正在使用该特定字符串,除非您在CREATE TABLE
中也使用了引号,否则不要使用它们。btree
是USING
的默认值,您也无需明确。所以这应该起作用:
CREATE UNIQUE INDEX idx_friendship_userid_friend_id ON friendship (owner_id, friend_id);
或者如果在创建时引用了表名,则执行以下操作:
CREATE UNIQUE INDEX idx_friendship_userid_friend_id ON "Friendship" (owner_id, friend_id);
以防万一,这里是CREATE INDEX reference。
答案 1 :(得分:1)
您可以尝试...
CREATE UNIQUE INDEX idx_friendship_userid_friend_id
ON friendship
USING btree
(owner_id COLLATE pg_catalog."default" , friend_id );