Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 как лучше решить задачу ?  [new]
alexanoid1
Member

Откуда:
Сообщений: 59
всем привет,
мне нужно выбирать данные из таблицы, которые старше опреденного, значения(тоесть они свежие, и были добавлены после последней выборки).

Как лучше реализовать такую задачу ?
25 июн 08, 17:54    [5847907]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
добавить поле типа DATE (в более сложных случаях TIMESTAMP) ?
25 июн 08, 17:55    [5847920]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
alexanoid1
Member

Откуда:
Сообщений: 59
только вот после какой даты начинать новую выборку ?
25 июн 08, 17:56    [5847938]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
alexanoid1
только вот после какой даты начинать новую выборку ?


Видимо, запомнить после предыдущей?
25 июн 08, 18:00    [5847961]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
kapelan
Member

Откуда: хутор БольшойБугор
Сообщений: 722
alexanoid1
только вот после какой даты начинать новую выборку ?

а когда была 'последняя выборка'?
25 июн 08, 18:01    [5847977]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
RA\/EN
Member

Откуда:
Сообщений: 3659
alexanoid1
всем привет,
мне нужно выбирать данные из таблицы, которые старше опреденного, значения(тоесть они свежие, и были добавлены после последней выборки).

Как лучше реализовать такую задачу ?

Ищите по словам ORA_ROWSCN, ROWDEPENDENCIES
25 июн 08, 18:01    [5847980]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
alexanoid1
Member

Откуда:
Сообщений: 59
мне прийдется хранить это значение в отдельной таблице (( тоесть специально создавать новую таблицу для одного числа.

возможно есть лучшие варианты ?
25 июн 08, 18:03    [5847992]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
semenar
Member

Откуда: Днепропетровск
Сообщений: 3308
Блог
alexanoid1
мне прийдется хранить это значение в отдельной таблице (( тоесть специально создавать новую таблицу для одного числа.

возможно есть лучшие варианты ?

не надо, может добавить поле- default sysdate и выбирать данные?
25 июн 08, 18:09    [5848042]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
alexanoid1
Member

Откуда:
Сообщений: 59
semenar
alexanoid1
мне прийдется хранить это значение в отдельной таблице (( тоесть специально создавать новую таблицу для одного числа.

возможно есть лучшие варианты ?

не надо, может добавить поле- default sysdate и выбирать данные?


можно подробней с этого момента ? я не совсем понял совет
25 июн 08, 18:10    [5848061]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
semenar
alexanoid1
мне прийдется хранить это значение в отдельной таблице (( тоесть специально создавать новую таблицу для одного числа.

возможно есть лучшие варианты ?

не надо, может добавить поле- default sysdate и выбирать данные?


Я так понял, что выборки разорваны во времени и где-то надо хранить границу последней...
25 июн 08, 18:10    [5848063]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
alexanoid1
Member

Откуда:
Сообщений: 59
tru55
semenar
alexanoid1
мне прийдется хранить это значение в отдельной таблице (( тоесть специально создавать новую таблицу для одного числа.

возможно есть лучшие варианты ?

не надо, может добавить поле- default sysdate и выбирать данные?


Я так понял, что выборки разорваны во времени и где-то надо хранить границу последней...


да
25 июн 08, 18:12    [5848069]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
alexanoid1
tru55

Я так понял, что выборки разорваны во времени и где-то надо хранить границу последней...


да


Oracle не хранит историю SELECT-ов (иначе объем данных мог бы возрасти немерянно). Если операция допускает DML, можно завести колонку типа флага и помечать уже отобранные записи (правда выборка будет идти медленней). Если несколько выборок идут в рамках одной сессии, можно хранить эту границу в переменной пакета (правда, надо предусмотреть ситуацию с падением сессии).
25 июн 08, 18:16    [5848091]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
orawish
Member

Откуда: Гадюкино-2 (City)
Сообщений: 15487
автор, неплохо бы еще пояснить, что такое вы понимаете под выборка
и значение в выборке. Это что, запрос и отфетченая_строка?
25 июн 08, 18:20    [5848119]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
alexanoid1
Member

Откуда:
Сообщений: 59
tru55

Oracle не хранит историю SELECT-ов (иначе объем данных мог бы возрасти немерянно). Если операция допускает DML, можно завести колонку типа флага и помечать уже отобранные записи (правда выборка будет идти медленней). Если несколько выборок идут в рамках одной сессии, можно хранить эту границу в переменной пакета (правда, надо предусмотреть ситуацию с падением сессии).


мне нравится вариант с флагом. Для выборки новых и маокирования их как выбраных - прийдется использовать 2 SQL запроса (SELECT and UPDATE)? или можно сделать все в одном ?
25 июн 08, 18:20    [5848124]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
tru55
Member

Откуда: СПб
Сообщений: 19790
Есть такой оператор SELECT ... FOR UPDATE :)
25 июн 08, 18:22    [5848133]     Ответить | Цитировать Сообщить модератору
 Re: как лучше решить задачу ?  [new]
alexanoid1
Member

Откуда:
Сообщений: 59
orawish
автор, неплохо бы еще пояснить, что такое вы понимаете под выборка
и значение в выборке. Это что, запрос и отфетченая_строка?


выборка - это просто SELECT where ID >= OLD_MAX_ID

после этого OLD_MAX_ID становится равным max ID из последнего SELECT
25 июн 08, 18:23    [5848140]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить