Що означає UPDATE в Oracle SQL?
2024SELECT FOR UPDATE — це команда SQL, корисна в контексті транзакційних навантажень. Це дозволяє «заблокувати» рядки, повернуті запитом SELECT, доки вся транзакція, частиною якої є цей запит, не буде зафіксована.27 червня 2022 р
Інструкція SELECT із пропозицією FOR UPDATE (інструкція SELECT FOR UPDATE) вибирає рядки результуючого набору та блокує їх. ВИБІР ДЛЯ ОНОВЛЕННЯ дозволяє базувати оновлення на основі наявних значень у рядках, оскільки це гарантує, що жоден інший користувач не зможе змінити ці значення до того, як ви їх оновите.
ДЛЯ ОНОВЛЕННЯ щоб заблокувати рядок у транзакції, змушуючи інші транзакції, які хочуть оновити той самий рядок, чекати завершення першої транзакції. Інші транзакції, які хочуть оновити той самий рядок, фактично поміщаються в чергу на основі того, коли вони вперше намагаються прочитати значення рядка.
Використовуйте для оновлення nowait will робить рядки зайнятими та отримує блокування, доки не буде виконано фіксацію або відкат. Будь-який інший сеанс, який намагається отримати блокування, отримає повідомлення про помилку Oracle на зразок ORA-00054: ресурс зайнятий і придбання з указаним NOWAIT або минув час очікування замість очікування звільнення блокування.
Оператор UPDATE змінює значення вказаних стовпців в одному чи кількох рядках таблиці чи подання. Щоб отримати повний опис оператора UPDATE, перегляньте довідник Oracle Database SQL. Інша (зазвичай коротка) назва таблиці або подання, на яку посилається, зазвичай використовується в реченні WHERE.
Речення FOR UPDATE є необов'язкова частина оператора SELECT. За замовчуванням курсори доступні лише для читання. Речення FOR UPDATE вказує, що курсор має бути оновлюваним, і забезпечує перевірку під час компіляції того, що оператор SELECT відповідає вимогам до оновлюваного курсору.
FOR UPDATE SKIP LOCKED: цей пункт працює інакше, ніж інші. в основному, вибрані рядки блокуються лише під час їх отримання, а не під час відкриття курсору, як інші. Однак наступні рядки будуть пропущені. Рядки, які наразі заблоковано іншою транзакцією.