Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
27
Добавлен:
02.05.2014
Размер:
2.03 Mб
Скачать

6.2 Sql-код создания триггеров базы данных

В данном подразделе в соответствии с реляционной моделью записывается SQL-оператор CREATE TRIGGER, обеспечивающий создание триггера базы данных для реализации операционного правила, специфицированного на предыдущем этапе в таблицах 5.4–5.6. При программировании триггера ориентировались на диалект Transact-SQL для Microsoft SQL Server 2000.

Для реализации был выбран следующий триггер базы данных:

– триггер «Проверка номера протокола».

– триггер «Проверка инвентарного номера».

Результаты представлены в таблице 6.2.

Таблица 6.2.  SQL-код создания триггеров базы данных

п/п

SQL-операторы

1

CREATE TRIGGER [Проверка номера протокола]

2

ON [Номер протокола] FOR INSERT, UPDATE AS

3

DECLARE

4

@ID INTEGER (6),

5

BEGIN TRANSACTION

6

SELECT @ID = [Номер протокола]

7

FROM INSERTED

8

IF (EXISTS(

9

SELECT * FROM [Отчет]

10

WHERE [Табельный номер] = @ID))

11

BEGIN

12

ROLLBACK TRANSACTION

13

RAISEERROR (‘Протокол с таким № уже существует’,16,1)

14

END;

15

16

CREATE TRIGGER [Проверка инвентарного номера]

17

ON [Инвентарный номер] FOR INSERT, UPDATE AS

18

DECLARE

19

@ID INTEGER (6),

20

BEGIN TRANSACTION

21

SELECT @ID = [Инвентарный номер]

22

FROM INSERTED

23

IF (EXISTS(

24

SELECT * FROM [Имущество]

25

WHERE [Инвентарный номер] = @ID))

26

BEGIN

27

ROLLBACK TRANSACTION

28

RAISEERROR (‘Такой инвентарный номер уже существует’,16,1)

29

END;

6.3 Sql-код реализации внешних представлений

В данном подразделе в соответствии со способами и формами представлений на основе модели соединения таблиц записываются SQL-операторы CREATE VIEW и CREATE PROCEDURE, обеспечивающие реализацию внешних представлений базы данных. При программировании ориентировались на диалект Transact-SQL для Microsoft SQL Server 2000. Результаты приведены в таблице 6.3.

Таблица 6.3.  SQL-код реализации внешних представлений

п/п

SQL-операторы

Функция 1 «Регистрация вызова»

1

CREATE VIEW [Сведения о вызовах] AS

2

SELECT [Вызов].[Нпп вызова],

3

[Вызов].[Номер опер.группы],

4

[Вызов].[Дата вызова],

5

[Вызов].[Причина],

6

[Сотрудник].[ФИО],

7

FROM [Сотрудник],[Вызов]

8

WHERE [Вызов].[Личный номер дежурного]=[Сотрудник].[Личный номер]

9

ORDER BY [Вызов].[Нпп];

10

11

CREATE PROCEDURE [Сведения о группе принявшей вызов]

12

@Вызов_Нпп INTEGER AS

13

SELECT [Вызов].[Нпп вызова],

14

[Вызов].[Номер опер.группы],

15

[Группа].[Личный номер],

16

[Сотрудник].[ФИО],

17

FROM [Вызов],[Группа],[Сотрудник]

18

WHERE [Вызов].[Нпп вызова]= @Вызов_Нпп

19

AND [Вызов].[Номер опер.группы]= [Группа].[Номер группы]

20

AND [Группа].[Личный номер]= [Сотрудник].[Личный номер]

21

ORDER BY [Группа].[Номер группы];

Функция 2 «Учет кадров»

19

CREATE VIEW [Сведения о сотрудниках] AS

20

SELECT [Сотрудник].[Личный номер],

21

[Сотрудник].[ФИО],

22

[Сотрудник].[Дата рождения],

23

[Сотрудник].[Паспортные данные],

24

[Звание].[Звание],

25

FROM [Сотрудник],[Звание]

26

WHERE [Сотрудник].[Код звания]=[Звание].[Код]

27

ORDER BY [Сотрудник].[ФИО];

28

29

CREATE PROCEDURE [Сведение о карьере сотрудника]

30

@Личный_номер INTEGER (6) AS

31

SELECT [Сотрудник].[Личный номер],

32

[Сотрудник].[ФИО],

33

[Место].[Нпп],

34

[Место].[Дата назначения],

35

[Место].[Дата увольнения],

36

[Подразделение].[Название]

37

FROM [Сотрудник],[Место],[Подразделение]

38

WHERE [Сотрудник].[Личный номер]=[Место].[Личный номер]= @Личный_номер

39

AND [Место].[Код подразделения]=[Подразделение].[Код]

40

ORDER BY [Место].[Нпп];

Функция 3 «Учет материальной части»

41

CREATE VIEW [Сведения о имуществе] AS

42

SELECT [Имущество].[Инвентарный номер],

43

[Имущество].[Название],

44

[Сотрудник].[ФИО]

45

FROM [Имущество],[Сотрудник]

46

WHERE [Имущество].[Личный номер]=[Сотрудник].[Личный номер]

47

ORDER BY 1;

48

49

CREATE PROCEDURE [Сведения о приписанном имуществе]

50

@Инв_Номер INTEGER AS

51

SELECT [Имущество].[Инвентарный номер],

52

[Имущество].[Название],

53

[Сотрудник].[ФИО]

54

FROM [Имущество],[Сотрудник]

55

WHERE [Имущество].[Инвентарный номер]= @Инв_Номер

Функция 4 «График дежурств»

56

CREATE VIEW [Дежурства] AS

57

SELECT [Дежурства].[Нпп],

58

[Дежурства].[Личный номер дежурного],

59

[Дежурства].[Нпп наряда],

60

[Дежурства].[Дата],

61

[Сотрудник].[ФИО],

62

FROM [Сотрудник],[Дежурство]

63

WHERE [Дежурство].[Личный номер дежурного]=[Сотрудник].[Личный номер]

64

ORDER BY [Дежурство].[Дата];

65

66

CREATE PROCEDURE [Состав дежурного наряда]

67

@Дата DATE AS

68

SELECT [Дежурство].[Нпп],

69

[Дежурство].[Дата],

70

[Группа].[Номер группы],

71

[Сотрудник].[Личный номер],

72

[Сотрудник].[ФИО]

73

FROM [Дежурство],[Наряд],[Группа],[Сотрудник]

74

WHERE [Дежурство].[Дата]=@Дата

75

AND [Дежурство].[Нпп наряда]=[Наряд].[Нпп]

76

AND [Наряд].[Номер группы]=[Группа].[Номер группы]

77

AND [Группа].[Личный номер]=[Сотрудник].[Личный номер];

78

ORDER BY [Группа].[Номер группы];

Функция 5 «Отчет о вызовах»

79

CREATE VIEW [Сведения о вызовах] AS

80

SELECT [Вызов].[Нпп],

81

[Вызов].[Номер опер. группы],

82

[Вызов].[Дата],

83

[Отчет].[Номер протокола],

84

[Отчет].[Мероприятия],

85

[Отчет].[Примечания],

86

FROM [Вызов],[Отчет]

87

WHERE [Отчет].[Нпп вызова]= [Вызов].[Нпп]

88

ORDER BY [Вызов].[Нпп];

89

90

CREATE PROCEDURE [Отчет о вызовах] AS

91

@Нпп_Вызова INTEGER AS

92

SELECT [Вызов].[Нпп],

93

[Вызов].[Номер опер. группы],

94

[Вызов].[Дата],

95

[Отчет].[Номер протокола],

96

[Отчет].[Мероприятия],

97

[Отчет].[Примечания],

98

FROM [Вызов],[Отчет]

99

WHERE [Отчет].[Нпп вызова]= [Вызов].[Нпп] = @Нпп_Вызова;

Соседние файлы в папке База данных - ИС милиции