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


-- 1) Создание процедуры "Discipline_Insert" (добавление дисциплины)
CREATE PROCEDURE Discipline_Insert
    @Name VARCHAR(64)
AS
BEGIN
    INSERT INTO Disciplines (name) 
    VALUES (@Name);
END;
GO

-- 2) Создание процедуры "Applicant_Insert" (добавление абитуриента)
CREATE PROCEDURE Applicant_Insert
    @LastName VARCHAR(30),
    @FirstName VARCHAR(20),
    @MiddleName VARCHAR(20),
    @Status VARCHAR(20),
    @City VARCHAR(30)
AS
BEGIN
    INSERT INTO Applicants (LastName, FirstName, MiddleName, Status, City) 
    VALUES (@LastName, @FirstName, @MiddleName, @Status, @City);
END;
GO

-- 3) Создание процедуры "Application_Insert" (добавление заявления со статусом "не зачислен")
CREATE PROCEDURE Application_Insert
    @ApplicantID INT,
    @SpecialtyID INT
AS
BEGIN
    INSERT INTO Applications (ApplicantID, SpecialtyID, Status) 
    VALUES (@ApplicantID, @SpecialtyID, 'не зачислен');
END;
GO

-- 4) Создание процедуры "Discipline_Delete" (удаление дисциплины)
CREATE PROCEDURE Discipline_Delete
    @DisciplineID INT
AS
BEGIN
    DELETE FROM Disciplines 
    WHERE discipline_id = @DisciplineID;
END;
GO

-- 5) Создание процедуры "Applicant_Delete" (удаление абитуриента, если он не зачислен)
CREATE PROCEDURE Applicant_Delete
    @ApplicantID INT
AS
BEGIN
    IF NOT EXISTS (SELECT 1 FROM Applicants WHERE ApplicantID = @ApplicantID AND Status = 'зачислен')
    BEGIN
        DELETE FROM Applicants 
        WHERE ApplicantID = @ApplicantID;
    END
    ELSE
    BEGIN
        RAISERROR('Удаление запрещено: абитуриент имеет статус "зачислен".', 16, 1);
    END
END;
GO

-- 6) Создание процедуры "Exam_Delete" (удаление экзамена вместе с его оценками)
CREATE PROCEDURE Exam_Delete
    @ExamID INT
AS
BEGIN
    -- Сначала удаляем связанные оценки
    DELETE FROM Grades 
    WHERE ExamID = @ExamID;
    
    -- Затем удаляем сам экзамен
    DELETE FROM Exams 
    WHERE ExamID = @ExamID;
END;
GO

-- 7) Создание процедуры "Specialty_Update" (увеличение вакансий на 10%)
CREATE PROCEDURE Specialty_Update
AS
BEGIN
    UPDATE Specialties 
    SET Vakansii = CAST(Vakansii * 1.10 AS INT);
END;
GO

-- 8) Создание процедуры "Exam_Update" (изменение даты экзамена)
CREATE PROCEDURE Exam_Update
    @ExamID INT,
    @NewDate DATE
AS
BEGIN
    UPDATE Exams 
    SET Date = @NewDate 
    WHERE ExamID = @ExamID;
END;
GO

-- 9) Создание процедуры "Applicant_Update" (обновление статуса на "зачислен" в таблицах Абитуриенты и Заявления)
CREATE PROCEDURE Applicant_Update
    @ApplicantID INT
AS
BEGIN
    -- Обновляем статус абитуриента
    UPDATE Applicants 
    SET Status = 'зачислен' 
    WHERE ApplicantID = @ApplicantID;

    -- Обновляем статус в его заявлениях
    UPDATE Applications 
    SET Status = 'зачислен' 
    WHERE ApplicantID = @ApplicantID;
END;
GO