[ Pobierz całość w formacie PDF ]
.Inną metodą ograniczenia liczby wierszy, których dotyczy wyrażenie z komendąUPDATE lub DELETE, jest redukcja tych wierszy, które komenda ta może zmienićw jednym przebiegu.Nie jest to możliwe we wszystkich platformach DBMS (np.umożliwia to SQL Server, a już nie InterBase).W tym celu musimy użyć komendy właściwej dla posiadanego serwera, którasłuży do ograniczania liczby wierszy przetwarzanych przez UPDATE lub DELETE.Komendę tę możemy powtarzać tyle razy, ile potrzeba dla przetworzenia całejtabeli.Poniżej zamieściliśmy przykład w języku Transact-SQL systemu SQLServer.SET ROWCOUNT 50000 /* Limits the UPDATE to 50000 rows at a' time*/WHILE (EXISTS (SELECT * FROM ORDERS WHERE Amount0))BEGINUPDATE ORDERS SET Amount=0WHERE Amount0/* Keeps the UPDATE from looping infinitely */ Rozdział 23 Sterowanie współbieżnością 667ENDZ uwagi na fakt, iż modyfikowane wiersze ciągle znajdują się w tabeli z każdymobiegiem pętli, musimy znalezć sposób ich usunięcia po przetworzeniu.Jednymz nich może być wykorzystanie klauzuli WHERE komendy UPDATE - tak, żebymodyfikowane wiersze były przez tę klauzulę ignorowane po ich zmodyfikowaniu.Innymi słowy musimy sprawdzać kolumny Amount z użyciem testu 0,ponieważ w komendzie UPDATE polu Amount nadajemy wartość 0.Dzięki temukomenda ta, modyfikując dany wiersz, zaznacza go jako już przetworzony.Zaznaczanie takie zapobiega dwukrotnemu przetworzeniu wiersza.A oto przykład z komendą DELETE:SET ROWCOUNT 50000 /* Limits the DELETE to 50000 rows at a' time*/WHILE (EXISTS (SELECT * FROM ORDERS WHERE Amount=0))BEGINDELETE FROM ORDERSWHERE Amount=0END [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • czarkowski.pev.pl
  •