Я сейчас тестирую Postgresql 9.4 beta2. Мне интересно, можно ли создать уникальный индекс для встроенного объекта json?
Я создаю имя таблицы products
:
CREATE TABLE products (oid serial primary key, data jsonb)
Теперь я пытаюсь вставить объект json в столбец данных.
{
"id": "12345",
"bags": [
{
"sku": "abc123",
"price": 0,
},
{
"sku": "abc123",
"price": 0,
}
]
}
Однако я хочу, чтобы sku
сумок были уникальными. Это означает, что json не может быть вставлен в таблицы продуктов, потому что sku
в этом случае не уникален.
Я попытался создать уникальный индекс, как показано ниже, но это не удалось.
CREATE UNIQUE INDEX product_sku_index ON products( (data->'bags'->'sku') )
Какие-либо предложения?
check
, но оно может работать только с одной строкой. Нет простого способа сказать, что я хочу, чтобы это подполе было уникальным для всех объектов json во всех строках. - person Craig Ringer   schedule 21.09.2014oid
для своих собственных столбцов. Это внутреннее имя, используемое Postgres, и оно вызовет много путаницы (если не проблем). - person a_horse_with_no_name   schedule 21.09.2014