Задание по коду 2
---- Добавление колонок Is_Deleted и Deleted_At
--ALTER TABLE [dbo].[Сотрудник]
--ADD
-- Is_Deleted BIT NOT NULL DEFAULT 0, ---- Флаг мягкого удаления (по умолчанию 0 = не удален)
-- Deleted_At DATETIME NULL; ---- Время удаления (NULL, если запись не удалена)
USE [Сотрудники]
GO
-- Создание триггера для мягкого удаления
CREATE TRIGGER trg_SoftDeleteEmployee
ON [dbo].[Сотрудник]
INSTEAD OF DELETE
AS
BEGIN
SET NOCOUNT ON;
-- Обновление записей, помечая их как удаленные
UPDATE e
SET
e.Is_Deleted = 1, -- Устанавливаем флаг удаления
e.Deleted_At = GETDATE() -- Фиксируем время удаления
FROM [dbo].[Сотрудник] e
INNER JOIN deleted d
ON e.Код = d.Код; -- Связываем с удаленными записями
END;
GO
CREATE VIEW [dbo].[Не_удаленные_сотрудники]
AS
SELECT
s.[Код],
s.[Фамилия],
s.[Имя],
s.[Дата_рождения],
s.[Номера_телефонов_UQ],
s.[Электронная_почта],
d.[Название] AS Должность,
m.[Название] AS Место_Работы
FROM [dbo].[Сотрудник] s
LEFT JOIN [dbo].[Сотрудник_Должность] sd ON s.[Код] = sd.[Код_Сотрудника]
LEFT JOIN [dbo].[Должность] d ON sd.[Код_Должности] = d.[Код]
LEFT JOIN [dbo].[Сотрудник_Место_Работы] sm ON s.[Код] = sm.[Код_Сотрудника]
LEFT JOIN [dbo].[Место_Работы] m ON sm.[Код_Место_Работы] = m.[Код]
WHERE s.[Is_Deleted] = 0;
GO
CREATE PROCEDURE ВывестиПервуюИПоследнююЗапись
AS
BEGIN
-- Переменные для хранения данных
DECLARE @Код UNIQUEIDENTIFIER;
DECLARE @Фамилия NVARCHAR(50);
DECLARE @Имя NVARCHAR(50);
DECLARE @Дата_рождения DATE;
DECLARE @Номера_телефонов_UQ NVARCHAR(20);
DECLARE @Электронная_почта NVARCHAR(50);
DECLARE @Должность NVARCHAR(50);
DECLARE @Место_Работы NVARCHAR(50);
-- Получаем первую запись
SELECT TOP 1
@Код = [Код],
@Фамилия = LTRIM(RTRIM(Фамилия)),
@Имя = LTRIM(RTRIM(Имя)),
@Дата_рождения = Дата_рождения,
@Номера_телефонов_UQ = Номера_телефонов_UQ,
@Электронная_почта = Электронная_почта,
@Должность = Должность,
@Место_Работы = Место_Работы
FROM [dbo].[Не_удаленные_сотрудники]
ORDER BY [Код];
PRINT 'Первая запись:';
IF @Код IS NOT NULL
PRINT CONCAT('Код: ', @Код, ', Фамилия: ', @Фамилия, ', Имя: ', @Имя);
ELSE
PRINT 'Первая запись не найдена.';
-- Получаем последнюю запись
SELECT TOP 1
@Код = [Код],
@Фамилия = LTRIM(RTRIM(Фамилия)),
@Имя = LTRIM(RTRIM(Имя)),
@Дата_рождения = Дата_рождения,
@Номера_телефонов_UQ = Номера_телефонов_UQ,
@Электронная_почта = Электронная_почта,
@Должность = Должность,
@Место_Работы = Место_Работы
FROM [dbo].[Не_удаленные_сотрудники]
ORDER BY [Код] DESC;
PRINT 'Последняя запись:';
IF @Код IS NOT NULL
PRINT CONCAT('Код: ', @Код, ', Фамилия: ', @Фамилия, ', Имя: ', @Имя);
ELSE
PRINT 'Последняя запись не найдена.';
END;
GO
EXEC ВывестиПервуюИПоследнююЗапись;
Джава лучше