powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / REPLACE и UPDATE - В чем разница
17 сообщений из 17, страница 1 из 1
REPLACE и UPDATE - В чем разница
    #32316610
Newb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Господа вопрос мучает, помогите разрешить.
Две записи в чем между ними разница:

SELECT Cursor1
SET ORDER TO Pole1
=SEEK(Peremennaia1)
REPLACE Pole2 WITH Pole2+Peremennaia2

UPDATE Cursosr1 SET Pole2+Peremennaia2
WHERE Pole1=Peremennaia1

На первый взгляд делают они одно и тоже. Но возможно что я что-то не понимаю. Подскажите пожалуйста.

Спасибо
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32316619
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Разница в том, что в первом случае будет изменена только текущая строка
(первая, у которой Pole1=Peremennaia1). А во втором будут измененты все строки ,
у которых Pole1=Peremennaia1

Вот между строками
REPLACE Pole2 WITH Pole2+Peremennaia2 For Pole1=Peremennaia1 in Cursor1

и
UPDATE Cursosr1 SET Pole2+Peremennaia2 WHERE Pole1=Peremennaia1

действительно нет никакой разницы :) Ну разве что вторая более понятна
для привыкших к синтаксису SQL
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32316621
karly™
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Упс... Одна неточность.

Команда Replace ... For ... блокирует заголовок таблицы,
т.е. пока она выполняется, другие пользователи не могут вносить изменения.

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

Т.е. первая команда будет работать чуть быстрее при монопольном доступе,
а вторую лучше применять при совместной работе.
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32316954
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Replace блокирует заголовок???
Давно не писал под файл-сервер, но вроде replace вообще ничего не блокирует...
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32317105
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HELP locking, record vs. table
Commands that Automatically Lock Records and Tables

Command | Scope of lock
......
REPLACE of more than one record | Entire table and all files from aliased fields
......
UPDATE – SQL | Entire table
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32317135
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HELP UPDATE
Unlike REPLACE, UPDATE - SQL uses record locking when updating multiple records in a table opened for shared access. This reduces record contention in multiuser situations, but may reduce performance.
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32317224
andrew_Pr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to Crip
Знаю. Решил подкрепить свои знания ссылкой на официальный источник. Полез в HELP и с удивлением для себя обнаружил UPDATE – SQL | Scope of lock = Entire table 8О
MicroSoft, однако. Места надо знать, где читать, а где не читать.
Спасибо, Crip, успокоил.
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32317258
Newb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Упс....
А что же тогда значит REPLACE ALL ?
Я так думал что она как раз и меняет все записи соответствующие условию
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32317278
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
replace all и replace for эквиваленты...
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32317281
Crip
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой опечатался...
replace all for и replace for эквиваленты...
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32446603
Задурили голову, так UPDATE-SQL Scope of lock только заголовок таблицы?
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32446638
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет.

UPDATE-SQL блокирует только те записи, которые собственно и модифицируются.

Это опечатка документации. Тот случай, когда не следует верить написанному MicroSoft.
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32446693
И блокирует их по одной изменяемой (блокирует одну, производит обновление, разблокирует, переходит к следующей )?
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32446782
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не проверял. Не представляю, как это можно проверить простым способом.

Теоретически, должно быть как ты описал. Но на практике, я не вижу особой разницы будет ли снята блокировка записи в момент перехода к следующей или по окончании модификации всех записей. Ведь все равно подобные команды желательно окружать транзакцией, а транзакция держит все созданные блокировки до окончания транзакции.
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32448518
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Удалось проверить.

Действительно, команда UPDATE-SQL блокирует только одну изменяемую запись и только на время внесения изменений. Т.е. при переходе на другую запись блокировка с предыдущей снимается.
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32453836
guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из академического интереса - и как удалось проверить - через триггеры?
...
Рейтинг: 0 / 0
REPLACE и UPDATE - В чем разница
    #32453872
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет. В FoxPro в любой команде допустимо писать пользовательскую функцию. Ну, я и написал.

UPDATE MyTab SET Field=Field+MyFunc() WHERE ID<=3

FUNCTION MyFunc
?IsRLocked(1,"MyTab")
RETURN ''

В таблице MyTab есть ID со значениями меньше 3, причем в это число входит запись с Recno()=1. В результате я получил список значений:

.T.
.F.

Т.е. в момент внесения изменений во вторую запись, первая запись уже НЕ заблокирована.
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / REPLACE и UPDATE - В чем разница
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]