74 lines
2.2 KiB
Transact-SQL
74 lines
2.2 KiB
Transact-SQL
-- 06_test.sql
|
||
-- Проверочные запросы. Выполняйте вручную после 01-05 скриптов.
|
||
|
||
USE [AdoNetShop];
|
||
GO
|
||
|
||
-- ============ Таблицы ============
|
||
SELECT * FROM Categories;
|
||
SELECT * FROM Products;
|
||
SELECT * FROM Customers;
|
||
SELECT * FROM Orders;
|
||
SELECT * FROM OrderItems;
|
||
|
||
-- ============ Примеры SELECT-запросов из приложения ============
|
||
|
||
-- 1. Все товары (демонстрация SqlDataReader)
|
||
SELECT Id, Name, Description, Price, StockQuantity, CategoryId
|
||
FROM Products;
|
||
GO
|
||
|
||
-- 2. Один товар по Id (демонстрация параметризованного SqlCommand)
|
||
DECLARE @Id INT = 1;
|
||
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
|
||
|
||
-- Товары только 1-й категории
|
||
EXEC dbo.GetProducts @CategoryId = 1;
|
||
GO
|
||
|
||
-- Один товар
|
||
EXEC dbo.GetProductById @ProductId = 1;
|
||
GO
|
||
|
||
-- Успешное изменение цены
|
||
EXEC dbo.UpdateProductPrice @ProductId = 1, @NewPrice = 1450.00;
|
||
SELECT Id, Name, Price FROM Products WHERE Id = 1;
|
||
GO
|
||
|
||
-- Ожидаемая ошибка: цена <= 0 (процедура сама вызовет RAISERROR)
|
||
EXEC dbo.UpdateProductPrice @ProductId = 1, @NewPrice = -10.00;
|
||
GO
|
||
|
||
-- ============ Проверка ограничений (CHECK) ============
|
||
|
||
-- Ожидаемая ошибка: Price > 0
|
||
INSERT INTO Products (Name, Price, StockQuantity, CategoryId)
|
||
VALUES ('Тестовый товар', -5, 1, 1);
|
||
GO
|
||
|
||
-- Ожидаемая ошибка: StockQuantity >= 0
|
||
UPDATE Products SET StockQuantity = -1 WHERE Id = 1;
|
||
GO
|
||
|
||
-- ============ Проверка целостности связей (FOREIGN KEY) ============
|
||
|
||
-- Ожидаемая ошибка: категории 999 не существует
|
||
INSERT INTO Products (Name, Price, StockQuantity, CategoryId)
|
||
VALUES ('Товар без категории', 100, 1, 999);
|
||
GO |