66 lines
3.5 KiB
Transact-SQL
66 lines
3.5 KiB
Transact-SQL
-- 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 |