USE [Login];
GO
SET NOCOUNT ON;
SET XACT_ABORT ON;
BEGIN TRY
BEGIN TRANSACTION;
DECLARE @i INT;
DECLARE @id INT;
-- 1. ФИЗИЧЕСКИЕ ЛИЦА
SET @i = 1;
WHILE @i <= 150
BEGIN
SET @id = 1000 + @i;
INSERT INTO dbo.[Физическое лицо]
(id_фио, фамилия, отчество, стаж)
VALUES
(
@id,
N'Сотрудник' + CAST(@i AS NVARCHAR(10)),
N'Тестович',
(@i % 25) + 1
);
SET @i = @i + 1;
END;
-- 2. РОЛИ
INSERT INTO dbo.[Роль]
(id_роль, директор, заместить, рабочий, администратор)
VALUES
(1001, N'Директор', N'Заместитель',
N'Рабочий', N'Администратор');
-- 3. СОТРУДНИКИ
SET @i = 1;
WHILE @i <= 150
BEGIN
SET @id = 1000 + @i;
INSERT INTO dbo.[сотрудник]
(id_сотрудника, фио, стаж, обязанности)
VALUES
(
@id,
@id,
(@i % 25) + 1,
CASE @i % 5
WHEN 0 THEN N'Работа с документами'
WHEN 1 THEN N'Обслуживание оборудования'
WHEN 2 THEN N'Работа с клиентами'
WHEN 3 THEN N'Настройка компьютеров'
ELSE N'Техническая поддержка'
END
);
SET @i = @i + 1;
END;
-- 4. ЗАЯВКИ
SET @i = 1;
WHILE @i <= 150
BEGIN
SET @id = 1000 + @i;
INSERT INTO dbo.[Заявка]
(id_заявки, номер_заявки, задача, сотрудник)
VALUES
(
@id,
@id,
CASE @i % 6
WHEN 0 THEN N'Ремонт компьютера'
WHEN 1 THEN N'Установка программ'
WHEN 2 THEN N'Настройка сети'
WHEN 3 THEN N'Подготовка документов'
WHEN 4 THEN N'Обслуживание сервера'
ELSE N'Проверка оборудования'
END,
N'Сотрудник' + CAST(@i AS NVARCHAR(10))
);
SET @i = @i + 1;
END;
-- 5. УЧЁТНЫЕ ЗАПИСИ
SET @i = 1;
WHILE @i <= 150
BEGIN
SET @id = 1000 + @i;
INSERT INTO dbo.[Вход]
(id_входа, логин, пароль, роль, фио, заявка, сотрудник)
VALUES
(
@id,
N'user' + CAST(@i AS NVARCHAR(10)),
N'test123',
1001,
@id,
@id,
@id
);
SET @i = @i + 1;
END;
COMMIT TRANSACTION;
PRINT N'Заполнение завершено успешно.';
END TRY
BEGIN CATCH
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION;
SELECT ERROR_MESSAGE() AS Ошибка;
END CATCH;
-- Проверка количества строк
SELECT N'Физические лица' AS Таблица,
COUNT(*) AS Количество
FROM dbo.[Физическое лицо]
UNION ALL
SELECT N'Сотрудники', COUNT(*) FROM dbo.[сотрудник]
UNION ALL
SELECT N'Заявки', COUNT(*) FROM dbo.[Заявка]
UNION ALL
SELECT N'Вход', COUNT(*) FROM dbo.[Вход]
UNION ALL
SELECT N'Роли', COUNT(*) FROM dbo.[Роль];
GO