ÎncepețiÎncepe gratuit

XACT_ABORT și THROW

Cei mai înstăriți clienți ai băncii la care lucrezi au decis să doneze 0,01% din current_balance-ul lor către o organizație non-profit. Tu ești responsabil cu pregătirea scriptului care actualizează conturile clienților, însă operațiunea trebuie efectuată doar pentru conturile cu un current_balance de peste 5.000.000 $. Directoarea băncii îți spune că, dacă nu există cel puțin 10 clienți înstăriți, nu ar trebui să efectuezi această operațiune, deoarece dorește să intervieveze mai mulți clienți.

Pregătești un script și, dintre variantele disponibile, alegi să folosești XACT_ABORT în combinație cu THROW. Astfel, dacă numărul de rânduri afectate este mai mic sau egal cu 10, poți genera o eroare care să determine anularea tranzacției prin rollback.

Acest exercițiu face parte din cursul

Tranzacții și gestionarea erorilor în SQL Server

Vezi cursul

Instrucțiuni pentru exercițiu

  • Folosește setarea corespunzătoare pentru XACT_ABORT.
  • Începe tranzacția.
  • Dacă numărul de rânduri afectate este mai mic sau egal cu 10, generează eroarea folosind instrucțiunea THROW, cu numărul 55000.
  • Confirmă tranzacția (commit) dacă numărul de rânduri afectate este mai mare de 10.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

-- Use the appropriate setting
SET XACT_ABORT ___;
-- Begin the transaction
___ ___; 
	UPDATE accounts set current_balance = current_balance - current_balance * 0.01 / 100
		WHERE current_balance > 5000000;
	IF @@ROWCOUNT <= 10	
    	-- Throw the error
		___ ___, 'Not enough wealthy customers!', 1;
	ELSE		
    	-- Commit the transaction
		___ ___; 
Editează și rulează codul