Эквивалентный запрос из MySQL в PostgreSQL - PullRequest
0 голосов
/ 14 апреля 2019

Я переключаюсь с 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 ]

2 голосов
/ 15 апреля 2019

Два утверждения эквивалентны, с несколькими оговорками:

  • Вам не нужно быть явным для публичных ссылок.
  • Кавычки "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 .

1 голос
/ 15 апреля 2019

Вы можете попробовать это ......

CREATE UNIQUE INDEX idx_friendship_userid_friend_id
ON friendship
USING btree
(owner_id COLLATE pg_catalog."default" , friend_id );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...