Вопрос

Есть ли простой способ определить псевдоним оператора для = Оператор в PostgreSQL?

Как это решено для != а также <> Оператор? Только <> Оператор кажется в PG_Operators. Это != Оператор жестко закодирован?

Это необходимо для приложения, которое использует самостоятельный оператор. В большинстве окружающих этот оператор должен действовать как =, но есть некоторые случаи, когда мы определяем особое поведение, создав собственный оператор и класс оператора. Но для нормального случая наш оператор должен просто быть псевдоним для = Оператор, так что это прозрачно для применения, которое используется реализация.

Это было полезно?

Решение

Просто проверьте pgadmin, схему pg_catalog. У него есть все операторы и показывают, как создайте их для всех данных DataTypes. Да, вы должны создать их для всех данных DataTypes. Так что это не просто один «псевдоним», вам нужно много псевдонимов.

Пример для char = char, используя !!!! Как псевдоним:

CREATE OPERATOR !!!!   -- name
(
  PROCEDURE = pg_catalog.chareq,
  LEFTARG = "char",
  RIGHTARG = "char",
  COMMUTATOR = !!!!, -- the same as the name
  RESTRICT = eqsel,
  JOIN = eqjoinsel,
  HASHES,
  MERGES
);
SELECT 'a' !!!! 'a' -- true
SELECT 'a' !!!! 'b' -- false

Проверить руководство А также обратите внимание на правила именования, у него есть некоторые ограничения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top