Допустим, у нас есть следующая структура таблицы и значения:
FooTable:
foo1 foo2 timestamp
1 1 1
2 2 1
2 1 2
В настоящее время нет ограничений первичного ключа для таблицы.
Вопрос:
В Oracle, как лучше всего сделать foo1 первичным ключом таблицы? Предположим, что:
- Никакие две строки не будут иметь одинаковую метку времени и значение foo1
- Строка с последней отметкой времени имеет приоритет (другие строки с таким же значением foo1 должны быть удалены).
Итак, вот требуемая структура таблицы после запроса:
FooTable:
foo1(pk) foo2 timestamp
1 1 1
2 1 2
Примечание: Основная проблема - удаление старых повторяющихся строк. После этого следующий запрос можно использовать для настройки первичного ключа, не опасаясь дубликатов:
alter table FooTable modify foo1 primary key;