BaşlayınÜcretsiz Başlayın

Sipariş vermeden önce stoğu kontrol etme

Birden fazla kez, müşteriler şirketin siparişleri karşılayacak kadar stoğu olmadığı hâlde ürünler için sipariş verdi.

Bu sorun, eylemleri için koşullu mantık içeren yeni bir tetikleyici eklenerek kolayca çözülebilir.

Tetikleyici, Orders tablosuna yeni satırlar eklendiğinde çalışmalı ve şirketin bu siparişleri karşılayacak kadar belirtilen ürün stokuna sahip olup olmadığını kontrol etmelidir.

Yeterli stok varsa, tetikleyici kendisini tetikleyenle aynı INSERT işlemini gerçekleştirecek—yalnız bu kez değerler inserted özel tablosundan alınacaktır.

Bu egzersiz

SQL Server'da Tetikleyiciler Oluşturma ve Optimize Etme

kursunun bir parçasıdır
Kursu Görüntüle

Egzersiz talimatları

  • INSERT deyimleri için çalışan ve sipariş miktarının mevcut stokla karşılanıp karşılanamayacağını kontrol eden yeni bir tetikleyici ekle.
  • Yetersiz stok varsa bir hata yükselt. Aksi takdirde, inserted özel tablosundan yararlanarak bir INSERT gerçekleştir.

Uygulamalı interaktif egzersiz

Bu örnek kodu tamamlayarak bu egzersizi bitirin.

-- Create a new trigger to confirm stock before ordering
CREATE TRIGGER ConfirmStock
ON Orders
INSTEAD OF ___
AS
	IF EXISTS (SELECT *
			   FROM Products AS p
			   INNER JOIN inserted AS i ON i.Product = p.Product
			   WHERE p.Quantity < i.Quantity)
	BEGIN
		___ ('You cannot place orders when there is no stock for the order''s product.', 16, 1);
	END
	ELSE
	BEGIN
		INSERT INTO Orders (OrderID, Customer, Product, Price, Currency, Quantity, WithDiscount, Discount, OrderDate, TotalAmount, Dispatched)
		SELECT OrderID, Customer, Product, Price, Currency, Quantity, WithDiscount, Discount, OrderDate, TotalAmount, Dispatched FROM ___;
	END;
Kodu Düzenle ve Çalıştır