|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
Прохожу scan по записям, типа такого: SCAN IF something DELETE NEXT 1 ENDIF ENDSCAN и допустим удаляю текущую запись коммандой DELETE NEXT 1 Хочу понять - что произойдет с курсором - не сместится ли он на след.запись? Не получится ли так, что при удалении я проскочу след. запись? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 13:04 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
Eugene7, не сместится. Но лучше вjобще отказаться от цикла и написать delete from ... where something И никаких тайных перемещений :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 13:22 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
NEXT 1 лишнее и явно указывай где удаляешь, а то случайно текущую таблицу сменишь и удалишь не там где надо Код: sql 1.
Если код выглядит именно так, то SCAN не надо, можно так Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 13:23 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
В scan намного больше кода, это я для примера привел. Спасибо всем за помощь ... |
|||
:
Нравится:
Не нравится:
|
|||
23.01.2017, 13:37 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
провели бы эксперимент сами ... |
|||
:
Нравится:
Не нравится:
|
|||
28.01.2017, 21:44 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
может и сместиться..:-), если таблица открыта с индексом или фильтр по del стоит ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 07:59 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
q1w1e1может и сместиться..:-), если таблица открыта с индексом или фильтр по del стоит Не сместится. Запись пометится на удаление, но указатель останется на ней. И с этой записью даже можно поработать. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 08:20 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
Да, курсор останется на записи, а сама запись может сместиться, подняться наверх или спуститься и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 10:51 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
q1w1e1Да, курсор останется на записи, а сама запись может сместиться, подняться наверх или спуститься и т.д.Не порите чушь, ей больно. Записи не перемещаются в принципе. Меняется порядок их об обхода в соответствии с индексами и фильтрами, но не более того. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 11:40 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
Ну смотря что назвать перемещением, если вы имеете нумерацию записей, да, она не изменяется... В данном случае я вижу на мониторе таблицу, делая удаление, запись для меня переместилась вверх(так как настроен индекс)... Как Вы это назовёте, порядком обхода или ещё как это ваше личное дело... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 12:38 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
q1w1e1делая удаление, запись для меня переместилась вверх(так как настроен индекс)... Как Вы это назовёте, порядком обхода или ещё как это ваше личное дело... Такое может произойти только если в индексном выражении участвует DELETED() и этот индекс активен. Во-первых обычно DELETED() не используют в индексном выражении. Во-вторых в документации по SCAN написано что нельзя внутри цикла менять поля участвующие в индексном выражении, что в данном случае происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 12:51 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
Если сильно хочется, то можно, начиная с клипера, приводились такие примеры, они и сейчас у меня работают в индексном выражении (iif(deleted(),"F","T"))+ и т.д. Так что я и написал, что есть иногда такие случаи, при нерекомендуемом подходе программирования.. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 12:58 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
To q1w1e1. Сударь, давайте не придумывать свои интерпретации терминов вместо тех, что уже установились в практике общения специалистов в данной области знаний. И это не мое личное дело, а ваше, если вы, конечно, хотите, чтобы ваши изречения понимали правильно. Перемещение записи - изменение места записи в файле. Изменение места записи на экране - изменение отображения записи. Отображение зависит от порядка обхода в соответствии с активным индексом. При отображении, кстати, происходит неявное перемещения указателя. Еще раз отмечу - при отображении. Которого в любом цикле может и не быть и тем более его нет при выполнении команды delete. То есть ваши замечания про монитор и то, что на нем вы видите, тут совершенно не в кассу. ... |
|||
:
Нравится:
Не нравится:
|
|||
30.01.2017, 13:42 |
|
Удаление записи во время scan
|
|||
---|---|---|---|
#18+
Пустой спор с правильным специалистом, который фанатчно верит в свою правильность.. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Что можно делать, что нельзя делать, вопрос философский и каждый решает сам, для меня делать можно всё, что не вызывает сообщение об ошибке VFP, и если так делать нельзя, то разработчики VFP, давно бы это пофиксили... В общем я остался при своём мнении ... |
|||
:
Нравится:
Не нравится:
|
|||
31.01.2017, 06:11 |
|
|
start [/forum/topic.php?fid=41&tid=1581994]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
others: | 251ms |
total: | 380ms |
0 / 0 |