从MySQL到PostgreSQL的等效查询

时间:2019-04-14 20:43:32

标签: mysql sql postgresql

我正在从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);

两个命令是否等效?或者我做错了什么?

2 个答案:

答案 0 :(得分:2)

这两个语句是等效的,但有一些警告:

  • 您不需要公开供公众参考。
  • 用引号"Friendship"表示您正在使用该特定字符串,除非您在CREATE TABLE中也使用了引号,否则不要使用它们。
  • btreeUSING的默认值,您也无需明确。

所以这应该起作用:

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 );