Memeriksa stok sebelum membuat pesanan
Dalam beberapa kesempatan, pelanggan membuat pesanan untuk produk saat perusahaan tidak memiliki stok yang cukup untuk memenuhinya.
Masalah ini dapat dengan mudah diperbaiki dengan menambahkan pemicu baru dengan logika kondisional untuk tindakannya.
Pemicu harus berjalan saat baris baru ditambahkan ke tabel Orders dan memeriksa apakah perusahaan memiliki stok produk yang cukup untuk memenuhi pesanan tersebut.
Jika stok mencukupi, pemicu kemudian akan melakukan operasi INSERT yang sama seperti yang memicunya—hanya saja kali ini, nilainya akan diambil dari tabel khusus inserted.
Latihan ini adalah bagian dari kursus
Membangun dan Mengoptimalkan Trigger di SQL Server
Petunjuk latihan
- Tambahkan pemicu baru yang berjalan untuk pernyataan
INSERTdan memeriksa apakah jumlah pesanan dapat dipenuhi oleh stok saat ini. - Naikkan kesalahan jika stok tidak mencukupi. Jika sebaliknya, lakukan
INSERTdengan memanfaatkan tabel khususinserted.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
-- 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;