Загрузка данных



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