AdoNetShop/database/03_insert_data.sql

66 lines
3.5 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 03_insert_data.sql
-- Тестовые данные для интернет-магазина.
--
-- Скрипт можно запускать сколько угодно раз: данные каждый раз
-- подставляются заново и получают одни и те же Id (1, 2, 3, ...).
-- Для этого Id задаются явно (SET IDENTITY_INSERT), а в конце счётчики
-- IDENTITY приводятся к правильному состоянию.
USE [AdoNetShop];
GO
-- Удаляем старые данные. Порядок важен: сначала удаляем таблицы,
-- на которые ссылаются другие (иначе нарушится FOREIGN KEY).
DELETE FROM [OrderItems];
DELETE FROM [Orders];
DELETE FROM [Products];
DELETE FROM [Categories];
DELETE FROM [Customers];
GO
-- ============ Категории ============
-- SET IDENTITY_INSERT ON позволяет указать значение колонки IDENTITY вручную.
-- В каждый момент времени это разрешено только для одной таблицы,
-- поэтому ON и OFF ставятся вокруг каждого INSERT.
SET IDENTITY_INSERT [Categories] ON;
INSERT INTO [Categories] (Id, Name) VALUES
(1, N'Ноутбуки'),
(2, N'Смартфоны'),
(3, N'Аксессуары');
SET IDENTITY_INSERT [Categories] OFF;
GO
-- ============ Товары ============
SET IDENTITY_INSERT [Products] ON;
INSERT INTO [Products] (Id, Name, Description, Price, StockQuantity, CategoryId) VALUES
(1, N'Ноутбук Dell XPS 15', N'Мощный ноутбук для работы и игр', 1500.00, 10, 1),
(2, N'MacBook Pro 14', N'Ноутбук Apple на чипе M2 Pro', 1999.99, 5, 1),
(3, N'iPhone 14 Pro', N'Флагманский смартфон Apple', 999.00, 20, 2),
(4, N'Samsung Galaxy S23', N'Флагманский смартфон Samsung', 899.50, 15, 2),
(5, N'Беспроводная мышь', N'Эргономичная беспроводная мышь', 25.00, 50, 3),
(6, N'USB-C хаб', N'Многопортовый адаптер USB-C', 45.00, 30, 3);
SET IDENTITY_INSERT [Products] OFF;
GO
-- ============ Клиенты ============
SET IDENTITY_INSERT [Customers] ON;
INSERT INTO [Customers] (Id, Name, Email, Phone) VALUES
(1, N'Иван Иванов', N'ivan@example.com', N'+7 999 123-45-67'),
(2, N'Пётр Петров', N'petr@example.com', N'+7 999 765-43-21');
SET IDENTITY_INSERT [Customers] OFF;
GO
-- ============ Заказы ============
-- Заказы намеренно НЕ создаются скриптом: их удобнее оформить
-- из приложения (пункт меню 8), чтобы наглядно показать работу транзакции.
GO
-- Приводим счётчики IDENTITY к текущему максимуму, чтобы следующий
-- товар/клиент/заказ, созданный из приложения, получил свободный Id.
-- (Например, первым заказом из приложения будет Id = 1.)
DBCC CHECKIDENT ('Categories', RESEED, 3) WITH NO_INFOMSGS;
DBCC CHECKIDENT ('Products', RESEED, 6) WITH NO_INFOMSGS;
DBCC CHECKIDENT ('Customers', RESEED, 2) WITH NO_INFOMSGS;
DBCC CHECKIDENT ('Orders', RESEED, 0) WITH NO_INFOMSGS;
DBCC CHECKIDENT ('OrderItems', RESEED, 0) WITH NO_INFOMSGS;
GO