Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
isxodniki.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.04 Mб
Скачать

Заключение

В итоге выполнения дипломного проекта были получены следующие основные результаты и выводы:

  • Обоснована целесообразность и актуальность разработки системы удаленного тестирования знаний.

  • Изучена предметная область вопроса, рассмотрены существующие решения проблемы.

  • Рассмотрены и изучены существующие аналоги системы, выявлены их достоинства и недостатки, конкретизированы данные технического задания

  • Разработана структура системы в целом и отдельных модулей в частности.

  • Разработаны и описаны рабочие алгоритмы системы

  • Разработана структура базы данных, используемой системой

  • Конкретизированы требования к средам передачи информации

  • Описана технология обработки входной информации

  • Разработан интерфейс пользователя

Наряду с этим, в итоге выполнения дипломного проекта были разработаны:

  • Рабочие программы на языках Delphi, удовлетворяющие всем требованиям технического задания.

  • Форма выходных документов, коими являются групповые и частные отчеты.

  • Инструкция по установке и пользованию системой.

Были проведены:

  • Процедура тестирования, согласно ГОСТ 19.301-79 «Программа и методика испытаний». Были исправлены выявленные в процессе тестирования ошибки и недочеты.

  • Оценка надежности и качества функционирования системы

Наряду с этим, был проведен расчет себестоимости и технико-экономическое обоснование разработки, приведены рекомендации по безопасности жизнедеятельности и экологии.

Возможным путем развития проекта может стать переход от клиент-серверной к многозвенной архитектуре приложения баз данных. При этом вся обработка данных будет производиться на сервере приложений. На сторону клиента будут приходить лишь результаты запросов. Введение в многозвенную архитектуру ВЕБ-сервера позволит осуществлять работу компонентов системы с помощью Интернет-технологий.

В результате выполнения дипломного проекта был получен полностью функциональный программный комплекс, сочетающий в себе редактор тестов, модуль администрирования пользователей и просмотра отчетов, модуль тестирования знаний. Разработанный комплекс удовлетворяет всем требованиям технического задания и готов к применению на практике.

Список использованных источников

    1. Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя/ Пол Нильсен М.: ООО «И.Д. Вильямс», 2008. — 1232с.:ил.

    2. Губер, Мартин. Понимание SQL/Мартин Губер — М.: 1993

    3. Архангельский, А.Я. Программирование в Delphi 7/А. Я. Архангельский —М.: ООО «Бином-Пресс», 2003г.—1152с.:ил.

    4. Дарахвелидзе, П. Г. Программирование в Delphi 7/ П. Г. Дарахвелизде, Е. П. Марков — СПб.: БХВ-Петербург, 2003.—784с.:ил.

    5. Липаев, В.В. Отладка сложных программных комплексов / В.В. Липаев - М.: Энергоатомиздат, 1993 – 251 с.

    6. Липаев, В.В. Методы обеспечения качества крупномасштабных программных средств / В.В. Липаев - М.: СИНТЕГ, 2003 – 350 с.

    7. Меняев М.Ф. Содержание организационно-экономической части дипломного проекта (для проектов, связанных с разработкой программного обеспечения): Учеб. пособие / М.Ф. Меняев ‑ М.: МГТУ им. Н.Э. Баумана, 2002.‑ 24 с.

    8. Кэнту, М. Delphi 7 для профессионалов/ М. Кэнту.—СПб.:Питер,2004.—1101с.:ил.

    9. МУ 2.2.4.706-98/МУ ОТ РМ 01-98.

Приложение А

Скрипт генерации новой базы данных

CREATE TABLE Answers

(

Answer_id int IDENTITY (1,1) ,

Answer_question_id int NOT NULL ,

Answer_number integer NULL ,

Answer_text text NULL ,

Answer_score integer NULL ,

Answer_is_right bit NULL ,

Answer_corresp integer NULL ,

Answer_picture image NULL

)

go

ALTER TABLE Answers

ADD CONSTRAINT XPKAnswers PRIMARY KEY NONCLUSTERED (Answer_id ASC)

go

CREATE TABLE Group_sections

(

Gs_id int IDENTITY (1,1) ,

Gs_groupe_id int NOT NULL ,

Gs_section_id int NOT NULL

)

go

ALTER TABLE Group_sections

ADD CONSTRAINT XPKGroup_sections PRIMARY KEY NONCLUSTERED (Gs_id ASC)

go

CREATE TABLE Groups

(

Groupe_id int IDENTITY (1,1) ,

Groupe_name varchar(512) NULL ,

Groupe_description varchar(512) NULL ,

Groupe_hidden bit NULL

)

go

ALTER TABLE Groups

ADD CONSTRAINT XPKGroups PRIMARY KEY NONCLUSTERED (Groupe_id ASC)

go

CREATE TABLE Questions

(

Question_id int IDENTITY (1,1) ,

Question_test_id int NOT NULL ,

Question_number integer NULL ,

Question_time char(8) NULL ,

Question_type integer NULL ,

Question_weigth integer NULL ,

Question_Text text NULL ,

Question_picture image NULL

)

go

ALTER TABLE Questions

ADD CONSTRAINT XPKQuestions PRIMARY KEY NONCLUSTERED (Question_id ASC)

go

CREATE TABLE Sections

(

Section_id int IDENTITY (1,1) ,

Section_name varchar(512) NULL ,

section_hidden bit NULL

)

go

ALTER TABLE Sections

ADD CONSTRAINT XPKSections PRIMARY KEY NONCLUSTERED (Section_id ASC)

go

CREATE TABLE Tests

(

Test_ID int IDENTITY (1,1) ,

Test_description varchar(512) NULL ,

Test_section_ID int NOT NULL ,

Test_name varchar(512) NULL ,

Test_type integer NULL ,

Test_author varchar(512) NULL ,

Test_question_count integer NULL ,

Test_is_random_answers bit NULL ,

Test_is_time_limit bit NULL ,

Test_time_limit char(8) NULL ,

Test_is_back bit NULL ,

Test_question_limit integer NULL

)

go

ALTER TABLE Tests

ADD CONSTRAINT XPKTests PRIMARY KEY NONCLUSTERED (Test_ID ASC)

go

CREATE TABLE User_answers

(

User_answer_ID int IDENTITY (1,1) ,

User_answer_qnumber integer NULL ,

User_answer_question text NULL ,

User_answer_answer text NULL ,

User_answer_time char(8) NULL ,

User_answer_is_right bit NULL ,

User_answer_score integer NULL ,

User_answer_answered bit NULL ,

User_answer_user_result_id int NOT NULL

)

go

ALTER TABLE User_answers

ADD CONSTRAINT XPKUser_answers PRIMARY KEY NONCLUSTERED (User_answer_ID ASC)

go

CREATE TABLE User_results

(

User_result_id int IDENTITY (1,1) ,

User_result_comleted bit NULL ,

User_result_time_begin datetime NULL ,

User_result_time_end datetime NULL ,

User_result_completed_questions integer NULL ,

User_result_right_questions integer NULL ,

User_result_score integer NULL ,

User_result_percent_right float NULL ,

User_result_total_questions integer NULL ,

User_result_test_title varchar(128) NULL ,

User_result_User_id int NOT NULL ,

User_result_test_id int NOT NULL

)

go

ALTER TABLE User_results

ADD CONSTRAINT XPKUser_results PRIMARY KEY NONCLUSTERED (User_result_id ASC)

go

CREATE TABLE Users

(

User_id int IDENTITY (1,1) ,

User_group_id int NOT NULL ,

User_name varchar(512) NULL ,

User_code varchar(128) NULL ,

User_password varchar(128) NULL ,

User_info varchar(512) NULL ,

User_deleted bit NULL ,

User_mail varchar(128) NULL ,

User_grants integer NULL ,

User_disable_test bit NULL

)

go

ALTER TABLE Users

ADD CONSTRAINT XPKUsers PRIMARY KEY NONCLUSTERED (User_id ASC)

go

ALTER TABLE Answers

ADD CONSTRAINT R_6 FOREIGN KEY (Answer_question_id) REFERENCES Questions(Question_id)

ON DELETE CASCADE

ON UPDATE NO ACTION

go

ALTER TABLE Group_sections

ADD CONSTRAINT R_9 FOREIGN KEY (Gs_section_id) REFERENCES Sections(Section_id)

ON DELETE CASCADE

ON UPDATE NO ACTION

go

ALTER TABLE Group_sections

ADD CONSTRAINT R_10 FOREIGN KEY (Gs_groupe_id) REFERENCES Groups(Groupe_id)

ON DELETE NO ACTION

ON UPDATE NO ACTION

go

ALTER TABLE Questions

ADD CONSTRAINT R_5 FOREIGN KEY (Question_test_id) REFERENCES Tests(Test_ID)

ON DELETE CASCADE

ON UPDATE NO ACTION

go

ALTER TABLE Tests

ADD CONSTRAINT R_8 FOREIGN KEY (Test_section_ID) REFERENCES Sections(Section_id)

ON DELETE CASCADE

ON UPDATE NO ACTION

go

ALTER TABLE User_answers

ADD CONSTRAINT R_16 FOREIGN KEY (User_answer_user_result_id) REFERENCES User_results(User_result_id)

ON DELETE NO ACTION

ON UPDATE NO ACTION

go

ALTER TABLE User_results

ADD CONSTRAINT R_14 FOREIGN KEY (User_result_User_id) REFERENCES Users(User_id)

ON DELETE NO ACTION

ON UPDATE NO ACTION

go

ALTER TABLE User_results

ADD CONSTRAINT R_15 FOREIGN KEY (User_result_test_id) REFERENCES Tests(Test_ID)

ON DELETE NO ACTION

ON UPDATE NO ACTION

go

ALTER TABLE Users

ADD CONSTRAINT R_7 FOREIGN KEY (User_group_id) REFERENCES Groups(Groupe_id)

ON DELETE CASCADE

ON UPDATE NO ACTION

Go

CREATE TRIGGER tD_Answers ON Answers FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on Answers */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Questions R/6 Answers on child delete no action */

/* ERWIN_RELATION:CHECKSUM="000139e1", PARENT_OWNER="", PARENT_TABLE="Questions"

CHILD_OWNER="", CHILD_TABLE="Answers"

P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",

FK_CONSTRAINT="R_6", FK_COLUMNS="Answer_question_id" */

IF EXISTS (SELECT * FROM deleted,Questions

WHERE

/* %JoinFKPK(deleted,Questions," = "," AND") */

deleted.Answer_question_id = Questions.Question_id AND

NOT EXISTS (

SELECT * FROM Answers

WHERE

/* %JoinFKPK(Answers,Questions," = "," AND") */

Answers.Answer_question_id = Questions.Question_id

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Answers because Questions exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Answers ON Answers FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on Answers */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insAnswer_id int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Questions R/6 Answers on child update no action */

/* ERWIN_RELATION:CHECKSUM="000157da", PARENT_OWNER="", PARENT_TABLE="Questions"

CHILD_OWNER="", CHILD_TABLE="Answers"

P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",

FK_CONSTRAINT="R_6", FK_COLUMNS="Answer_question_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(Answer_question_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Questions

WHERE

/* %JoinFKPK(inserted,Questions) */

inserted.Answer_question_id = Questions.Question_id

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Answers because Questions does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Group_sections ON Group_sections FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on Group_sections */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/9 Group_sections on child delete no action */

/* ERWIN_RELATION:CHECKSUM="0002881c", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="R/9",

FK_CONSTRAINT="R_9", FK_COLUMNS="Gs_section_id" */

IF EXISTS (SELECT * FROM deleted,Sections

WHERE

/* %JoinFKPK(deleted,Sections," = "," AND") */

deleted.Gs_section_id = Sections.Section_id AND

NOT EXISTS (

SELECT * FROM Group_sections

WHERE

/* %JoinFKPK(Group_sections,Sections," = "," AND") */

Group_sections.Gs_section_id = Sections.Section_id

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Group_sections because Sections exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/10 Group_sections on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/10", C2P_VERB_PHRASE="R/10",

FK_CONSTRAINT="R_10", FK_COLUMNS="Gs_groupe_id" */

IF EXISTS (SELECT * FROM deleted,Groups

WHERE

/* %JoinFKPK(deleted,Groups," = "," AND") */

deleted.Gs_groupe_id = Groups.Groupe_id AND

NOT EXISTS (

SELECT * FROM Group_sections

WHERE

/* %JoinFKPK(Group_sections,Groups," = "," AND") */

Group_sections.Gs_groupe_id = Groups.Groupe_id

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Group_sections because Groups exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Group_sections ON Group_sections FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on Group_sections */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insGs_id int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/9 Group_sections on child update no action */

/* ERWIN_RELATION:CHECKSUM="0002f0e4", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="R/9",

FK_CONSTRAINT="R_9", FK_COLUMNS="Gs_section_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(Gs_section_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Sections

WHERE

/* %JoinFKPK(inserted,Sections) */

inserted.Gs_section_id = Sections.Section_id

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

select @nullcnt = count(*) from inserted where

inserted.Gs_section_id IS NULL

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Group_sections because Sections does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/10 Group_sections on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/10", C2P_VERB_PHRASE="R/10",

FK_CONSTRAINT="R_10", FK_COLUMNS="Gs_groupe_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(Gs_groupe_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Groups

WHERE

/* %JoinFKPK(inserted,Groups) */

inserted.Gs_groupe_id = Groups.Groupe_id

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

select @nullcnt = count(*) from inserted where

inserted.Gs_groupe_id IS NULL

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Group_sections because Groups does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Groups ON Groups FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on Groups */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/7 Users on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="0001bdd4", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Users"

P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="R/7",

FK_CONSTRAINT="R_7", FK_COLUMNS="User_group_id" */

DELETE Users

FROM Users,deleted

WHERE

/* %JoinFKPK(Users,deleted," = "," AND") */

Users.User_group_id = deleted.Groupe_id

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/10 Group_sections on parent delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/10", C2P_VERB_PHRASE="R/10",

FK_CONSTRAINT="R_10", FK_COLUMNS="Gs_groupe_id" */

IF EXISTS (

SELECT * FROM deleted,Group_sections

WHERE

/* %JoinFKPK(Group_sections,deleted," = "," AND") */

Group_sections.Gs_groupe_id = deleted.Groupe_id

)

BEGIN

SELECT @errno = 30001,

@errmsg = 'Cannot delete Groups because Group_sections exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Groups ON Groups FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on Groups */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insGroupe_id int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/7 Users on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00022ae6", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Users"

P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="R/7",

FK_CONSTRAINT="R_7", FK_COLUMNS="User_group_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Groupe_id)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Users

WHERE

/* %JoinFKPK(Users,deleted," = "," AND") */

Users.User_group_id = deleted.Groupe_id

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Groups because Users exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/10 Group_sections on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/10", C2P_VERB_PHRASE="R/10",

FK_CONSTRAINT="R_10", FK_COLUMNS="Gs_groupe_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Groupe_id)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Group_sections

WHERE

/* %JoinFKPK(Group_sections,deleted," = "," AND") */

Group_sections.Gs_groupe_id = deleted.Groupe_id

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Groups because Group_sections exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Questions ON Questions FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on Questions */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Questions R/6 Answers on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="0001fbb8", PARENT_OWNER="", PARENT_TABLE="Questions"

CHILD_OWNER="", CHILD_TABLE="Answers"

P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",

FK_CONSTRAINT="R_6", FK_COLUMNS="Answer_question_id" */

DELETE Answers

FROM Answers,deleted

WHERE

/* %JoinFKPK(Answers,deleted," = "," AND") */

Answers.Answer_question_id = deleted.Question_id

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/5 Questions on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="Questions"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="R/5",

FK_CONSTRAINT="R_5", FK_COLUMNS="Question_test_id" */

IF EXISTS (SELECT * FROM deleted,Tests

WHERE

/* %JoinFKPK(deleted,Tests," = "," AND") */

deleted.Question_test_id = Tests.Test_ID AND

NOT EXISTS (

SELECT * FROM Questions

WHERE

/* %JoinFKPK(Questions,Tests," = "," AND") */

Questions.Question_test_id = Tests.Test_ID

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Questions because Tests exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Questions ON Questions FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on Questions */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insQuestion_id int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Questions R/6 Answers on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00026fe1", PARENT_OWNER="", PARENT_TABLE="Questions"

CHILD_OWNER="", CHILD_TABLE="Answers"

P2C_VERB_PHRASE="R/6", C2P_VERB_PHRASE="R/6",

FK_CONSTRAINT="R_6", FK_COLUMNS="Answer_question_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Question_id)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Answers

WHERE

/* %JoinFKPK(Answers,deleted," = "," AND") */

Answers.Answer_question_id = deleted.Question_id

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Questions because Answers exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/5 Questions on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="Questions"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="R/5",

FK_CONSTRAINT="R_5", FK_COLUMNS="Question_test_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(Question_test_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Tests

WHERE

/* %JoinFKPK(inserted,Tests) */

inserted.Question_test_id = Tests.Test_ID

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Questions because Tests does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Sections ON Sections FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on Sections */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/8 Tests on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00019e4b", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Tests"

P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="R/8",

FK_CONSTRAINT="R_8", FK_COLUMNS="Test_section_ID" */

DELETE Tests

FROM Tests,deleted

WHERE

/* %JoinFKPK(Tests,deleted," = "," AND") */

Tests.Test_section_ID = deleted.Section_id

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/9 Group_sections on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="R/9",

FK_CONSTRAINT="R_9", FK_COLUMNS="Gs_section_id" */

DELETE Group_sections

FROM Group_sections,deleted

WHERE

/* %JoinFKPK(Group_sections,deleted," = "," AND") */

Group_sections.Gs_section_id = deleted.Section_id

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Sections ON Sections FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on Sections */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insSection_id int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/8 Tests on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00022bb1", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Tests"

P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="R/8",

FK_CONSTRAINT="R_8", FK_COLUMNS="Test_section_ID" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Section_id)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Tests

WHERE

/* %JoinFKPK(Tests,deleted," = "," AND") */

Tests.Test_section_ID = deleted.Section_id

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Sections because Tests exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/9 Group_sections on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Group_sections"

P2C_VERB_PHRASE="R/9", C2P_VERB_PHRASE="R/9",

FK_CONSTRAINT="R_9", FK_COLUMNS="Gs_section_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Section_id)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Group_sections

WHERE

/* %JoinFKPK(Group_sections,deleted," = "," AND") */

Group_sections.Gs_section_id = deleted.Section_id

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Sections because Group_sections exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Tests ON Tests FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on Tests */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/5 Questions on parent delete cascade */

/* ERWIN_RELATION:CHECKSUM="0002ff97", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="Questions"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="R/5",

FK_CONSTRAINT="R_5", FK_COLUMNS="Question_test_id" */

DELETE Questions

FROM Questions,deleted

WHERE

/* %JoinFKPK(Questions,deleted," = "," AND") */

Questions.Question_test_id = deleted.Test_ID

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/15 User_results on parent delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="R/15",

FK_CONSTRAINT="R_15", FK_COLUMNS="User_result_test_id" */

IF EXISTS (

SELECT * FROM deleted,User_results

WHERE

/* %JoinFKPK(User_results,deleted," = "," AND") */

User_results.User_result_test_id = deleted.Test_ID

)

BEGIN

SELECT @errno = 30001,

@errmsg = 'Cannot delete Tests because User_results exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/8 Tests on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Tests"

P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="R/8",

FK_CONSTRAINT="R_8", FK_COLUMNS="Test_section_ID" */

IF EXISTS (SELECT * FROM deleted,Sections

WHERE

/* %JoinFKPK(deleted,Sections," = "," AND") */

deleted.Test_section_ID = Sections.Section_id AND

NOT EXISTS (

SELECT * FROM Tests

WHERE

/* %JoinFKPK(Tests,Sections," = "," AND") */

Tests.Test_section_ID = Sections.Section_id

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Tests because Sections exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Tests ON Tests FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on Tests */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insTest_ID int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/5 Questions on parent update no action */

/* ERWIN_RELATION:CHECKSUM="0003c096", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="Questions"

P2C_VERB_PHRASE="R/5", C2P_VERB_PHRASE="R/5",

FK_CONSTRAINT="R_5", FK_COLUMNS="Question_test_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Test_ID)

BEGIN

IF EXISTS (

SELECT * FROM deleted,Questions

WHERE

/* %JoinFKPK(Questions,deleted," = "," AND") */

Questions.Question_test_id = deleted.Test_ID

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Tests because Questions exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/15 User_results on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="R/15",

FK_CONSTRAINT="R_15", FK_COLUMNS="User_result_test_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(Test_ID)

BEGIN

IF EXISTS (

SELECT * FROM deleted,User_results

WHERE

/* %JoinFKPK(User_results,deleted," = "," AND") */

User_results.User_result_test_id = deleted.Test_ID

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Tests because User_results exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Sections R/8 Tests on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Sections"

CHILD_OWNER="", CHILD_TABLE="Tests"

P2C_VERB_PHRASE="R/8", C2P_VERB_PHRASE="R/8",

FK_CONSTRAINT="R_8", FK_COLUMNS="Test_section_ID" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(Test_section_ID)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Sections

WHERE

/* %JoinFKPK(inserted,Sections) */

inserted.Test_section_ID = Sections.Section_id

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

select @nullcnt = count(*) from inserted where

inserted.Test_section_ID IS NULL

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Tests because Sections does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_User_answers ON User_answers FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on User_answers */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* User_results R/16 User_answers on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00017376", PARENT_OWNER="", PARENT_TABLE="User_results"

CHILD_OWNER="", CHILD_TABLE="User_answers"

P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="R/16",

FK_CONSTRAINT="R_16", FK_COLUMNS="User_answer_user_result_id" */

IF EXISTS (SELECT * FROM deleted,User_results

WHERE

/* %JoinFKPK(deleted,User_results," = "," AND") */

deleted.User_answer_user_result_id = User_results.User_result_id AND

NOT EXISTS (

SELECT * FROM User_answers

WHERE

/* %JoinFKPK(User_answers,User_results," = "," AND") */

User_answers.User_answer_user_result_id = User_results.User_result_id

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last User_answers because User_results exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_User_answers ON User_answers FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on User_answers */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insUser_answer_ID int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* User_results R/16 User_answers on child update no action */

/* ERWIN_RELATION:CHECKSUM="0001ac05", PARENT_OWNER="", PARENT_TABLE="User_results"

CHILD_OWNER="", CHILD_TABLE="User_answers"

P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="R/16",

FK_CONSTRAINT="R_16", FK_COLUMNS="User_answer_user_result_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(User_answer_user_result_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,User_results

WHERE

/* %JoinFKPK(inserted,User_results) */

inserted.User_answer_user_result_id = User_results.User_result_id

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

select @nullcnt = count(*) from inserted where

inserted.User_answer_user_result_id IS NULL

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update User_answers because User_results does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_User_results ON User_results FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on User_results */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* User_results R/16 User_answers on parent delete no action */

/* ERWIN_RELATION:CHECKSUM="0003a738", PARENT_OWNER="", PARENT_TABLE="User_results"

CHILD_OWNER="", CHILD_TABLE="User_answers"

P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="R/16",

FK_CONSTRAINT="R_16", FK_COLUMNS="User_answer_user_result_id" */

IF EXISTS (

SELECT * FROM deleted,User_answers

WHERE

/* %JoinFKPK(User_answers,deleted," = "," AND") */

User_answers.User_answer_user_result_id = deleted.User_result_id

)

BEGIN

SELECT @errno = 30001,

@errmsg = 'Cannot delete User_results because User_answers exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Users R/14 User_results on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Users"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="R/14",

FK_CONSTRAINT="R_14", FK_COLUMNS="User_result_User_id" */

IF EXISTS (SELECT * FROM deleted,Users

WHERE

/* %JoinFKPK(deleted,Users," = "," AND") */

deleted.User_result_User_id = Users.User_id AND

NOT EXISTS (

SELECT * FROM User_results

WHERE

/* %JoinFKPK(User_results,Users," = "," AND") */

User_results.User_result_User_id = Users.User_id

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last User_results because Users exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/15 User_results on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="R/15",

FK_CONSTRAINT="R_15", FK_COLUMNS="User_result_test_id" */

IF EXISTS (SELECT * FROM deleted,Tests

WHERE

/* %JoinFKPK(deleted,Tests," = "," AND") */

deleted.User_result_test_id = Tests.Test_ID AND

NOT EXISTS (

SELECT * FROM User_results

WHERE

/* %JoinFKPK(User_results,Tests," = "," AND") */

User_results.User_result_test_id = Tests.Test_ID

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last User_results because Tests exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_User_results ON User_results FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on User_results */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insUser_result_id int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* User_results R/16 User_answers on parent update no action */

/* ERWIN_RELATION:CHECKSUM="000452af", PARENT_OWNER="", PARENT_TABLE="User_results"

CHILD_OWNER="", CHILD_TABLE="User_answers"

P2C_VERB_PHRASE="R/16", C2P_VERB_PHRASE="R/16",

FK_CONSTRAINT="R_16", FK_COLUMNS="User_answer_user_result_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(User_result_id)

BEGIN

IF EXISTS (

SELECT * FROM deleted,User_answers

WHERE

/* %JoinFKPK(User_answers,deleted," = "," AND") */

User_answers.User_answer_user_result_id = deleted.User_result_id

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update User_results because User_answers exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Users R/14 User_results on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Users"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="R/14",

FK_CONSTRAINT="R_14", FK_COLUMNS="User_result_User_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(User_result_User_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Users

WHERE

/* %JoinFKPK(inserted,Users) */

inserted.User_result_User_id = Users.User_id

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

select @nullcnt = count(*) from inserted where

inserted.User_result_User_id IS NULL

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update User_results because Users does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Tests R/15 User_results on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Tests"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/15", C2P_VERB_PHRASE="R/15",

FK_CONSTRAINT="R_15", FK_COLUMNS="User_result_test_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(User_result_test_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Tests

WHERE

/* %JoinFKPK(inserted,Tests) */

inserted.User_result_test_id = Tests.Test_ID

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

select @nullcnt = count(*) from inserted where

inserted.User_result_test_id IS NULL

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update User_results because Tests does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tD_Users ON Users FOR DELETE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* DELETE trigger on Users */

BEGIN

DECLARE @errno int,

@errmsg varchar(255)

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Users R/14 User_results on parent delete no action */

/* ERWIN_RELATION:CHECKSUM="00023254", PARENT_OWNER="", PARENT_TABLE="Users"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="R/14",

FK_CONSTRAINT="R_14", FK_COLUMNS="User_result_User_id" */

IF EXISTS (

SELECT * FROM deleted,User_results

WHERE

/* %JoinFKPK(User_results,deleted," = "," AND") */

User_results.User_result_User_id = deleted.User_id

)

BEGIN

SELECT @errno = 30001,

@errmsg = 'Cannot delete Users because User_results exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/7 Users on child delete no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Users"

P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="R/7",

FK_CONSTRAINT="R_7", FK_COLUMNS="User_group_id" */

IF EXISTS (SELECT * FROM deleted,Groups

WHERE

/* %JoinFKPK(deleted,Groups," = "," AND") */

deleted.User_group_id = Groups.Groupe_id AND

NOT EXISTS (

SELECT * FROM Users

WHERE

/* %JoinFKPK(Users,Groups," = "," AND") */

Users.User_group_id = Groups.Groupe_id

)

)

BEGIN

SELECT @errno = 30010,

@errmsg = 'Cannot delete last Users because Groups exists.'

GOTO ERROR

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

CREATE TRIGGER tU_Users ON Users FOR UPDATE AS

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* UPDATE trigger on Users */

BEGIN

DECLARE @NUMROWS int,

@nullcnt int,

@validcnt int,

@insUser_id int,

@errno int,

@errmsg varchar(255)

SELECT @NUMROWS = @@rowcount

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Users R/14 User_results on parent update no action */

/* ERWIN_RELATION:CHECKSUM="00026ae8", PARENT_OWNER="", PARENT_TABLE="Users"

CHILD_OWNER="", CHILD_TABLE="User_results"

P2C_VERB_PHRASE="R/14", C2P_VERB_PHRASE="R/14",

FK_CONSTRAINT="R_14", FK_COLUMNS="User_result_User_id" */

IF

/* %ParentPK(" OR",UPDATE) */

UPDATE(User_id)

BEGIN

IF EXISTS (

SELECT * FROM deleted,User_results

WHERE

/* %JoinFKPK(User_results,deleted," = "," AND") */

User_results.User_result_User_id = deleted.User_id

)

BEGIN

SELECT @errno = 30005,

@errmsg = 'Cannot update Users because User_results exists.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

/* Groups R/7 Users on child update no action */

/* ERWIN_RELATION:CHECKSUM="00000000", PARENT_OWNER="", PARENT_TABLE="Groups"

CHILD_OWNER="", CHILD_TABLE="Users"

P2C_VERB_PHRASE="R/7", C2P_VERB_PHRASE="R/7",

FK_CONSTRAINT="R_7", FK_COLUMNS="User_group_id" */

IF

/* %ChildFK(" OR",UPDATE) */

UPDATE(User_group_id)

BEGIN

SELECT @nullcnt = 0

SELECT @validcnt = count(*)

FROM inserted,Groups

WHERE

/* %JoinFKPK(inserted,Groups) */

inserted.User_group_id = Groups.Groupe_id

/* %NotnullFK(inserted," IS NULL","select @nullcnt = count(*) from inserted where"," AND") */

IF @validcnt + @nullcnt != @NUMROWS

BEGIN

SELECT @errno = 30007,

@errmsg = 'Cannot update Users because Groups does not exist.'

GOTO ERROR

END

END

/* ERwin Builtin 2 февраля 2009 г. 2:18:54 */

RETURN

ERROR:

raiserror @errno @errmsg

rollback transaction

END

go

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]