Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовой СУБД Вьюгин А.А 4.docx
Скачиваний:
2
Добавлен:
20.09.2019
Размер:
2.45 Mб
Скачать

Приложение 6 триггер

-------------------------------------------------------------------------------------------------------------------

--триггер, запрещающий исправлять разряд электромеханика в отношении Electrician на менее низкую

CREATE TRIGGER LowClass

ON Electrician FOR UPDATE

AS

IF EXISTS

(SELECT 'TRUE'

FROM inserted I

LEFT JOIN deleted D

ON D.IDElectrician=I.IDElectrician

WHERE I.Class<D.Class)

BEGIN

RAISERROR ('Нельзя понижать разряд электромеханика!!!',16,1)

ROLLBACK TRAN

END

--проверка

UPDATE Electrician

SETClass = 1

WHEREFIO='Пупкин Василий Петрович'

Приложение 7 Хранимые процедуры

-------------------------------------------------------------------------------------------------------------------

--хранимые процедуры

--************************************************Street*************************

--процедура, которая будет вводить данные в таблицу Street

GO

CREATE PROC PStreetINSERT

@NameStreetVARCHAR(40)

AS

INSERT INTO Street

(NameStreet)

VALUES

(@NameStreet)

EXEC PStreetINSERT

'Юбилейная'

EXEC PStreetINSERT

'Ленина'

EXECPStreetINSERT

'Коммунистическая'

--процедура, которая будет обновлять данные в таблице Street

GO

ALTER PROC UpdateStreet

(@IDStreet INT,

@NameStreetVARCHAR(40)

)

AS

UPDATE Street

SET NameStreet = @NameStreet

WHEREIDStreet=@IDStreet

EXECUpdateStreet

'Космотнавтов','Коммунистическая'

--процедура, которая будет удалять данные из таблицы Street

GO

ALTER PROC DeleteStreet

(@IDStreet INT)

AS

DELETE FROM Street

WHERE IDStreet=@IDStreet

--*****************************************************************************

--************************************************TypeOfApplication**************

--процедура, которая будет вводить данные в таблицу TypeOfApplication

GO

CREATE PROC PTypeOfApplicationINSERT

@TypeOfAppVARCHAR(80)

AS

INSERT INTO TypeOfApplication

(TypeOfApp)

VALUES

(@TypeOfApp)

EXEC PTypeOfApplicationINSERT

'Поломка'

EXEC PTypeOfApplicationINSERT

'Застревание'

EXECPTypeOfApplicationINSERT

'Техосмотр'

--процедура, которая будет удалять данные из таблицы TypeOfApplication

GO

ALTER PROC DeleteTypeOfApplication

(@IDTypeOfApplication INT)

AS

DELETE FROM TypeOfApplication

WHERE IDTypeOfApplication=@IDTypeOfApplication

--*****************************************************************************

--************************************************Electrician*********************

-- процедура ввода данных в Electrician

GO

CREATE PROC PElectricianINSERT

@FIO VARCHAR(80),

@Class INT ,

@SpecialityVARCHAR(40),

@Birthday DATETIME

AS

INSERT INTO Electrician

(FIO,

Class,

Speciality,

Birthday)

VALUES

(@FIO,

@Class,

@Speciality,

@Birthday)

EXEC PElectricianINSERT

'Пупкин Василий Петрович','2','Аварийный электромеханик','03.11.1970'

EXEC PElectricianINSERT

'Алешин Генадий Иванович','3','Основной электромеханик','03.11.1985'

--процедура, которая будет обновлять данные в таблице Electrician

GO

ALTER PROC UpdateElectrician

(@IDElectrician INT,

@FIO VARCHAR(80),

@Class INT,

@SpecialityVARCHAR(40),

@Birthday DATETIME)

AS

UPDATE Electrician

SET FIO = @FIO,

Class = @Class,

Speciality=@Speciality,

Birthday=@Birthday

WHEREIDElectrician=@IDElectrician

--процедура, которая будет удалять данные из таблицы Electrician

GO

ALTER PROC DeleteElectrician

(@IDElectrisian INT)

AS

DELETE FROM Electrician

WHERE IDElectrician=@IDElectrisian

--*****************************************************************************

--************************************************Defect************************

--процедура, которая будет вводить данные в таблицу Defect

GO

CREATE PROC PDefectINSERT

@TypeOfDefectVARCHAR(80)

AS

INSERT INTO Defect

(TypeOfDefect)

VALUES

(@TypeOfDefect)

EXEC PDefectINSERT

'Перегорелалампочка'

EXECPDefectINSERT

'Не работают двери'

--процедура, которая будет обновлять данные в таблице Defect

GO

ALTER PROC UpdateDefect

(@IDdefect INT,

@TypeOfDefectVARCHAR(80))

AS

UPDATE Defect

SET TypeOfDefect = @TypeOfDefect

WHEREIDDefect=@IDdefect

--процедура, которая будет удалять данные из таблицы Defect

GO

CREATE PROC DeleteDefect

(@IDDefect INT)

AS

DELETE FROM Defect

WHERE IDDefect = @IDDefect

--*****************************************************************************

--************************************************Elevator***********************

--процедура, которая будет вводить данные в таблицу Elevator

GO

CREATE PROC PElevatorsINSERT

@PersonalNumberVARCHAR(10),

@Building VARCHAR(10),

@Door INT,

@IDStreet INT

AS

INSERT INTO Elevators

(PersonalNumber,

Building,

Door,

IDStreet)

VALUES

(@PersonalNumber,

@Building,

@Door,

@IDStreet)

EXEC PElevatorsINSERT

'123','121/2','2',1

EXEC PElevatorsINSERT

'21','65','1',2

--процедура, которая будет обновлять данные в таблице Elevstors

GO

ALTER PROC UpdateElevators

(@IDElevator INT,

@PersonalNumberVARCHAR(10),

@Building VARCHAR (10),

@Door INT,

@IDStreet INT)

AS

UPDATE Elevators

SET PersonalNumber = @PersonalNumber,

Building = @Building,

Door = @Door,

IDStreet = @IDStreet

WHEREIDElevator=@IDElevator

--процедура, которая будет удалять данные из таблицы Elevators

GO

ALTER PROC DeleteElevators

(@IDElevator INT)

AS

DELETE FROM Elevators

WHERE IDElevator=@IDElevator

--*****************************************************************************

--************************************************Request***********************

--процедура, которая будет вводить данные в таблицу Request

GO

CREATE PROC PRequestINSERT

@BreakDescriptionVARCHAR(256),

@BreakTime DATETIME,

@BreakLevel BIT,

@IDElevator INT,

@IDTypeOfApplication INT

AS

INSERT INTO Request

(BreakDescription,

BreakTime,

BreakLevel,

IDElevator,

IDTypeOfApplication)

VALUES

(@BreakDescription,

@BreakTime,

@BreakLevel,

@IDElevator,

@IDTypeOfApplication)

EXECPRequestINSERT

'не работает лифт','01.03.2012 11:10:00:00',0,1,1

EXECPRequestINSERT

'застрялилюди','04.11.2011 15:32:00:00',1,2,2

--процедура, которая будет обновлять данные в таблице Request

GO

ALTER PROC UpdateRequest

(@IDRequest INT,

@BreakDescriptionVARCHAR(256),

@BreakTime DATETIME,

@BreakLevel BIT,

@IDElevator INT,

@IDTypeOfApplication INT)

AS

UPDATE Request

SET BreakDescription = @BreakDescription,

BreakTime = @BreakTime,

BreakLevel = @BreakLevel,

IDElevator = @IDElevator,

IDTypeOfApplication = @IDTypeOfApplication

WHEREIDRequest = @IDRequest

--процедура, которая будет удалять данные из таблицы Request

GO

CREATE PROC DeleteRequest

(@IDRequest INT)

AS

DELETE FROM Request

WHERE IDRequest = @IDRequest

--*****************************************************************************

--************************************************Orders************************

--процедура, которая будет вводить данные в таблицу Orders

GO

CREATE PROC POrdersINSERT

(@OrdersTime DATETIME,

@IDElectrician INT,

@IDRequest INT)

AS

INSERT INTO Orders

(OrdersTime,

IDElectrician,

IDRequest)

VALUES

(@OrdersTime,

@IDElectrician,

@IDRequest)

EXEC POrdersINSERT

'01.03.2012 15:30:00:00',1,4

EXECPOrdersINSERT

'02.02.2012 09:15:00:00',2,5

--процедура, которая будет обновлять данные в таблице Orders

GO

ALTER PROC UpdateOrders

(@OrdersTime DATETIME,

@IDOrders INT,

@IDElectrician INT,

@IDRequest INT)

AS

UPDATE Orders

SET OrdersTime = @OrdersTime,

IDElectrician = @IDElectrician,

IDRequest = @IDRequest

WHERE IDOrders = @IDOrders

--процедура, которая будет удалять данные из таблицы Orders

GO

CREATE PROC DeleteOrders

(@IDOrders INT)

AS

DELETE FROM Orders

WHERE IDOrders = @IDOrders

--*****************************************************************************

--************************************************Defects***********************

--процедура, которая будет вводить данные в таблицу Defects

GO

CREATE PROC PDefectsINSERT

(@IDOrders INT,

@IDDefect INT

)

AS

INSERT INTO Defects

(IDOrders,

IDDefect)

VALUES

(@IDOrders,

@IDDefect)

EXEC PDefectsINSERT

3,1

EXEC PDefectsINSERT

4,2

--процедура, котораябудетобновлятьданные в таблице Defects

GO

CREATE PROC UpdateDefects

(@IDDefect INT,

@IDOrders INT)

AS

UPDATE Defects

SET IDDefect = @IDDefect

WHEREIDOrders = @IDOrders

--процедура, которая будет удалять данные из таблицы Defects

GO

CREATE PROC DeleteDefects

(@IDOrders INT)

AS

DELETE FROM Defects

WHEREIDOrders = @IDOrders

****************************************************************************