-- 06_test.sql -- Проверочные запросы: выполните вручную после скриптов 01-05. -- Скрипт ничего не ломает: он только читает данные и показывает, -- какие ошибки ожидаются при нарушении ограничений. USE [AdoNetShop]; GO -- ============ Таблицы ============ SELECT * FROM Categories; SELECT * FROM Products; SELECT * FROM Customers; SELECT * FROM Orders; SELECT * FROM OrderItems; -- ============ Примеры запросов, которые выполняет приложение ============ -- 1. Все товары (демонстрация SqlDataReader) SELECT Id, Name, Description, Price, StockQuantity, CategoryId FROM Products; GO -- 2. Один товар по Id (демонстрация параметризованного SqlCommand). -- Id берём из таблицы, чтобы скрипт работал после любого числа перезапусков. DECLARE @Id INT = (SELECT MIN(Id) FROM Products); SELECT Id, Name, Description, Price, StockQuantity, CategoryId FROM Products WHERE Id = @Id; GO -- 3. Товары вместе с названиями категорий (JOIN) SELECT p.Id, p.Name, p.Price, p.StockQuantity, c.Name AS CategoryName FROM Products p JOIN Categories c ON p.CategoryId = c.Id ORDER BY p.Name; GO -- ============ Проверка хранимых процедур ============ -- Все товары EXEC dbo.GetProducts; GO -- Товары только первой категории DECLARE @CatId INT = (SELECT MIN(Id) FROM Categories); EXEC dbo.GetProducts @CategoryId = @CatId; GO -- Один товар DECLARE @Id2 INT = (SELECT MIN(Id) FROM Products); EXEC dbo.GetProductById @ProductId = @Id2; GO -- Успешное изменение цены DECLARE @Id3 INT = (SELECT MIN(Id) FROM Products); EXEC dbo.UpdateProductPrice @ProductId = @Id3, @NewPrice = 1450.00; SELECT Id, Name, Price FROM Products WHERE Id = @Id3; GO -- Ожидается ошибка: цена должна быть > 0 (RAISERROR внутри процедуры). -- Снимите комментарий со следующей строки, чтобы увидеть ошибку: -- EXEC dbo.UpdateProductPrice @ProductId = 1, @NewPrice = -10.00; GO -- ============ Проверка ограничений (CHECK) ============ -- Ожидается ошибка CHECK: Price > 0 -- INSERT INTO Products (Name, Price, StockQuantity, CategoryId) -- VALUES (N'Тестовый товар', -5, 1, 1); GO -- Ожидается ошибка CHECK: StockQuantity >= 0 -- UPDATE Products SET StockQuantity = -1 WHERE Id = 1; GO -- ============ Проверка целостности связей (FOREIGN KEY) ============ -- Ожидается ошибка FOREIGN KEY: категории 999 не существует -- INSERT INTO Products (Name, Price, StockQuantity, CategoryId) -- VALUES (N'Товар без категории', 100, 1, 999); GO