Вопрос

Я пытаюсь создать уникальный идентификатор для каждой строки представления.Представление, которое у меня есть, объединяет множество таблиц, и поэтому ни один первичный ключ таблицы не поможет мне идентифицировать строку.

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

Пример:

общий

Я пытаюсь сделать это в запросе, а не в хранимой процедуре.Любая помощь будет оценена по достоинству!

Спасибо!

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

Решение

Насколько я понимаю, код сгенерированного тега относится к строке в физической таблице, а не к строке в наборе результатов (что, по сути, и есть представление).

Чтобы получить уникальный идентификатор для каждой строки, вам нужно каким-то образом объединить первичные ключи таблиц, к которым вы присоединяетесь.

Другие советы

Если у вас нет первичных первичных ключей для всех ваших таблиц, вы можете выбрать идентификаторы строк из отдельных таблиц и объединить их:

общий

Не используйте псевдостолбец ROWID, он зависит от хранилища (и может измениться при использовании полезного кодового кода-тега).Вы также не можете использовать его для эффективного поиска (объединенных) записей в представлении.

В этом случае лучше использовать настоящие PK в ваших записях (чтобы поиск по индексу работал).И я бы не стал к ним присоединяться, а просто использовал бы несколько столбцов - только так вы можете повторно выбрать их (с поддержкой индекса).

На этот вопрос в течение некоторого времени есть ответ, но будьте осторожны при объединении первичных ключей. Например, если у вас есть key1 = 23 and key2 = 45 и объединить его с 2345 , неясно, были ли ключи 23 and 45 или 2 and 345 .

Используйте разделитель (23,45 -> 23_45) , который не может встречаться ни в одном из ключей (не все ключи являются числовыми).Или введите ключи до максимально возможной длины (23,45 -> 00230045 (for key1 and key2 NUMBER(4,0))) .

Также помните о функции Oracles (не все БД могут с этим справиться) для определения первичных и внешних ключей для нескольких столбцов, что может быть быстрее и расширяет ваши возможности для чистых объединений без необходимости разделять объединенный ключ.

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