|  15.08.2003, 12:16 | #1 | 
| Участник | Не работает selectForUpdate() 
			
			Добрый день. Использую Axapta 3.0 В Dev. Guide написано: A record can be selected for update, either by using the forUpdate keyword in the select statement, or by using the selectForUpdate method on tables. На практике столкнулся с тем, что метод selectForUpdate() не работает. Например, если написано так: PHP код: 
			Если же написать PHP код: 
			Может кто-нибудь объяснить, почему так? И что делать надо, если запись не выбрана для изменения, а удалить (изменить) ее надо? | 
|  | 
|  15.08.2003, 13:57 | #2 | 
| ---------------- | selectForUpdate 
			
			selectForUpdate() замечательно работате, когда его используют до select-а, например в методе find() на любой таблице. Чтобы изменить запись, которую выбрали без forUpdate можно сделать еще один запросик по ключевому полю, но уже с forUpdate. | 
|  | 
|  16.08.2003, 22:49 | #3 | 
| Administrator | 
			
			Повторю еще раз, что, по моему мнению, прозвучало у Wamr не слишком внятно: selectForUpdate блокирует для изменения весь курсор (таблицу) и он не будет работать, если уже проведен какой-то select (лучше считать, что selectForUpdate сбрасывает результаты select'а - это, конечно, не так, но для понимания это будет лучше). Резюме: неправильно: select .... selectForUpdate() правильно: selectForUpdate() select... 
				__________________ Not registered yet? Register here! Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me | 
|  | 
|  18.08.2003, 15:54 | #4 | 
| Участник | 
			
			Если я правильно понял... пусть мне пришла параметром запись, которую вычитали без forUpdate и я хочу ее удалить. Тогда я должен написать что-то вроде PHP код: 
			 | 
|  | 
|  18.08.2003, 16:44 | #5 | 
| Участник | 
			
			Это не дикость, а механизм управления блокировками. Если выбрать запись без forUpdate, то нет гарантии, что другая транзакция не апдейтит в тот же самый момент нашу запись. | 
|  | 
|  18.08.2003, 17:01 | #6 | 
| Участник | 
			
			Вообще-то я имел ввиду то, что нельзя написать [t.selectForUpdate()] вместо [select forupdate * from t where t.recId==t.recId] Насчет Цитата: 
		
			Если выбрать запись без forUpdate, то нет гарантии, что другая транзакция не апдейтит в тот же самый момент нашу запись.
		
	 | 
|  | 
|  18.08.2003, 17:24 | #7 | 
| Участник | 
			
			Все правильно, но при условии, что вы выбирали запись forUpdate....
		 | 
|  |