Oracle
 sql >> база данни >  >> RDS >> Oracle

Състезание между избор и актуализация

Предполагам, че вашата UPDATE самият оператор проверява lastmodified стойност, която сте прочели във вашия SELECT твърдение, както предполага ninesided.

Ако lastmodified е DATE , тогава има потенциално състояние на състезание, ако има множество актуализации на един и същи ред в една и съща секунда след DATE има детайлност само към второто. Ако lastmodified е TIMESTAMP , от друга страна, прозорецът, в който може да възникне условието за състезание, е много по-ограничен, тъй като TIMESTAMP ще има между 3 и 9 цифри с точност под секунди (3 на повечето Windows машини, 6 на повечето Unix машини). Малко вероятно е, но не и невъзможно, да имате две актуализации в една и съща милисекунда или дори в една и съща микросекунда. Но не е безпогрешен.

Можете да използвате стойност, генерирана от последователност, вместо дата на последна промяна. Това може да гарантира, че няма да загубите актуализация, тъй като последователността на NOCYCLE няма да върне една и съща стойност два пъти. Но ако тръгнете по този път, вие или губите информационното предимство да имате последна актуална дата на всеки ред, или съхранявате няколко допълнителни байта данни във всеки ред на таблицата. Всеки от тези компромиси може да си струва в зависимост от вашето приложение или може да създаде повече проблеми, отколкото да ги разреши.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle SQL Developer Проблем при инициализиране на началната страница

  2. зареждане на огромни XLS данни в Oracle с помощта на python

  3. Промяна на дисплейното съобщение на Oracle

  4. ORA-01000:максималните отворени курсори са надвишени в asp.net

  5. Получаване на стойност въз основа на максимума на различна колона, групирана от друга колона