82 lines
3.0 KiB
Transact-SQL
82 lines
3.0 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;
|
||
|
||
-- ============ Примеры запросов, которые выполняет приложение ============
|
||
|
||
-- 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 |