-- 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