BEGIN TRANSACTION

use dean;

CREATE TABLE [Специальность]
(
    ID                        int IDENTITY (1,1),
    Шифр                      nvarchar(10)   NOT NULL,
    Наименование              nvarchar(100)  NOT NULL,
    ФормаОбучения             nvarchar(20)   NOT NULL,
    Уровень                   nvarchar(20)   NOT NULL,
    ПродолжительностьОбучения int            NOT NULL,
    Описание                  nvarchar(4000) NOT NULL,
    CONSTRAINT [PK_СПЕЦИАЛЬНОСТЬ] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;

CREATE TABLE [Группа]
(
    ID                     int IDENTITY (1,1),
    Название               nvarchar(30) NOT NULL,
    КодСпециальности       int          NOT NULL,
    ЗачётнаяКнижкаСтаросты int          NULL,
    ТабельныйНомерКуратора int          NOT NULL,
    CONSTRAINT [PK_ГРУППА] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;

CREATE TABLE [Студент]
(
    НомерЗачетнойКнижки int IDENTITY (1,1),
    Фамилия             nvarchar(30) NOT NULL,
    Имя                 nvarchar(30) NOT NULL,
    Отчество            nvarchar(30) NOT NULL,
    Группа              int          NOT NULL,
    ГодПоступления      date         NOT NULL,
    CONSTRAINT [PK_СТУДЕНТ] PRIMARY KEY CLUSTERED (НомерЗачетнойКнижки ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;

CREATE TABLE [Преподаватель]
(
    ТабельныйНомер int IDENTITY (1,1),
    Фамилия        nvarchar(30) NOT NULL,
    Имя            nvarchar(30) NOT NULL,
    Отчество       nvarchar(30) NOT NULL,
    УчёнаяСтепень  nvarchar(50) NOT NULL,
    УчёноеЗвание   nvarchar(50) NOT NULL,
    Кафедра        nvarchar(50) NOT NULL,
    CONSTRAINT [PK_ПРЕПОДАВАТЕЛЬ] PRIMARY KEY CLUSTERED (ТабельныйНомер ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;

CREATE TABLE [Дисциплина]
(
    ID               int IDENTITY (1,1),
    Название         nvarchar(100) NOT NULL,
    КодСпециальности int           NOT NULL,
    Семестр          int           NOT NULL,
    Объём            int           NOT NULL,
    Отчётность       nvarchar(50)  NOT NULL,
    CONSTRAINT [PK_ДИСЦИПЛИНА] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;

CREATE TABLE [Изучение]
(
    ID         int IDENTITY (1,1),
    Студент    int  NOT NULL,
    Дисциплина int  NOT NULL,
    Дата       date NOT NULL,
    Оценка     int  NOT NULL,
    CONSTRAINT [PK_ИЗУЧЕНИЕ] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;

CREATE TABLE [Преподавание]
(
    ID            int IDENTITY (1,1),
    Дисциплина    int NOT NULL,
    Преподаватель int NOT NULL,
    CONSTRAINT [PK_ПРЕПОДАВАНИЕ] PRIMARY KEY CLUSTERED ([ID] ASC) WITH (IGNORE_DUP_KEY = OFF)
);
go;

ALTER TABLE [Группа]
    WITH CHECK ADD CONSTRAINT [Группа_fk0] FOREIGN KEY ([КодСпециальности]) REFERENCES [Специальность] ([ID])
        ON UPDATE CASCADE;
go;

ALTER TABLE [Группа]
    WITH CHECK ADD CONSTRAINT [Группа_fk1] FOREIGN KEY ([ЗачётнаяКнижкаСтаросты]) REFERENCES [Студент] ([НомерЗачетнойКнижки])
        ON UPDATE CASCADE;
go;

ALTER TABLE [Группа]
    WITH CHECK ADD CONSTRAINT [Группа_fk2] FOREIGN KEY ([ТабельныйНомерКуратора]) REFERENCES [Преподаватель] ([ТабельныйНомер])
        ON UPDATE CASCADE;
go;


ALTER TABLE [Студент]
    WITH CHECK ADD CONSTRAINT [Студент_fk0] FOREIGN KEY ([Группа]) REFERENCES [Группа] ([ID])
        ON UPDATE NO ACTION;
go;


ALTER TABLE [Дисциплина]
    WITH CHECK ADD CONSTRAINT [Специальность_fk0] FOREIGN KEY (КодСпециальности) REFERENCES [Специальность] ([ID])
        ON UPDATE CASCADE;
go;


ALTER TABLE [Изучение]
    WITH CHECK ADD CONSTRAINT [Изучение_fk0] FOREIGN KEY (Студент) REFERENCES [Студент] ([НомерЗачетнойКнижки])
        ON UPDATE CASCADE;
go;

ALTER TABLE [Изучение]
    WITH CHECK ADD CONSTRAINT [Изучение_fk1] FOREIGN KEY (Дисциплина) REFERENCES [Дисциплина] ([ID])
        ON UPDATE CASCADE;
go;


ALTER TABLE [Преподавание]
    WITH CHECK ADD CONSTRAINT [Преподавание_fk0] FOREIGN KEY (Дисциплина) REFERENCES [Дисциплина] ([ID])
        ON UPDATE CASCADE;
go;

ALTER TABLE [Преподавание]
    WITH CHECK ADD CONSTRAINT [Преподавание_fk1] FOREIGN KEY (Преподаватель) REFERENCES [Преподаватель] ([ТабельныйНомер])
        ON UPDATE CASCADE;
go;

COMMIT TRANSACTION

BEGIN TRANSACTION

INSERT INTO [Преподаватель]([Фамилия], [Имя], [Отчество], [УчёнаяСтепень], [УчёноеЗвание], [Кафедра])
VALUES (N'Казаков', N'Олег', N'Владимирович', N'Кандидат технических наук', N'Профессор',
        N'Информатика и вычислительная техника'),
       (N'Селиванов', N'Кирилл', N'Владимирович', N'Отсутствует', N'Старший преподаватель',
        N'Информатика и вычислительная техника'),
       (N'Оленева', N'Татьяна', N'Сергеевна', N'Отсутствует', N'Старший преподаватель',
        N'Информатика и вычислительная техника'),
       (N'Хантимиров', N'Илья', N'Андреевич', N'Отсутствует', N'Ассистент', N'Информатика и вычислительная техника');

INSERT INTO [Специальность]([Шифр], [Наименование], [ФормаОбучения], [Уровень], [ПродолжительностьОбучения], [Описание])
VALUES (N'09.03.01', N'Информатика и вычислительная техника', N'Очная', N'Бакалавриат', 4,
        N'Для того чтобы стать квалифицированным специалистом в выбранном направлении, студенту предстоит научиться:\n\nопределять сферу исследования, собирать, проводить проверку, обрабатывать и анализировать первичные сведения для проектирования;\nразрабатывать программное обеспечение, используя современные инструментальные приложения и средства;\nанализировать технические данные и научную информацию, делать выводы, опираясь на опыт зарубежных и российских коллег по теме проектирования;\nобучать сотрудников компании, использовать современные методы и автоматизированные программные средства для исследования и проектирования;\nосуществлять техническое обслуживание ЭВМ, программных средств и периферийной аппаратуры;\nустанавливать необходимые программные системы и приложения, настраивать и обеспечивать нормальную работу программно-аппаратных средств;\nанализировать показатели технического состояния, амортизации у вычислительного оборудования;\nпроизводить мероприятия по текущему ремонту и профилактике качественной работы систем;\nналаживать взаимосвязь между элементами и узлами вычислительных приборов;\nмонтировать, проводить тестирования и вводить в эксплуатацию вычислительные и информационные сети;\nработать с программными языками и писать приложения на них.'),
       (N'09.03.02', N'Информационные системы и технологии', N'Очная', N'Бакалавриат', 4,
        N'Бакалавров, получающих образование в области информационных систем и технологий, учат:\n\nосуществлять комплексный анализ разрабатываемых проектов и проводить консультации, помогающие обеспечить подготовку производственного процесса и технического обслуживания;\nизучать взаимосвязи в информационных комплексах и проводить системный анализ заданной области;\nсоздавать прикладные и базовые технологии;\nпроводить комплекс работ, направленных на освоение и финишную модернизацию технологических процессов на этапе подготовки производственного процесса нового продукта;\nпринимать непосредственное участие в вычислительных тестированиях и экспериментах, направленных на проверку точности и актуальности применяемых математических моделей;\nкорректировать стратегию проекта, исходя из инфраструктурного обеспечения предприятия и действующих в нем информационных систем;\nсобирать конечную программную систему, используя для этого готовые элементы и компоненты;\nобеспечивать непрерывную работу и сопровождать информационные технологии и системы, опираясь на требования по качеству и надежности;\nсоставлять доступные инструкции для персонала по применению правильной техники эксплуатации.'),
       (N'09.03.04', N'Программная инженерия', N'Очная', N'Бакалавриат', 4,
        N'Изучение данной специальности позволит студентам:\n\nучаствовать в осуществлении научных наблюдений и экспериментов в области глубокого анализа программных проектов, продукции, инструментов и методов изучаемого направления;\nобрабатывать и изучать возможности удовлетворения предъявленных заказчиком к разработчику требованиям;\nконструировать компоненты и составляющие программных изделий в необходимом для проектирования объеме в рамках определенного задания;\nадаптировать и использовать средства автоматизированного испытания, проектирования, разработки и обслуживания продукции;\nосуществлять деятельность, направленную на обучение пользователей и их аттестацию в области эксплуатации компьютерных систем;\nустанавливать, настраивать, осваивать и администрировать программное обеспечение;\nпроводить профилактические и корректирующие работы, связанные с эффективным использованием установленных требованиями продуктов;\nразрабатывать пакет документов и формы отчетности;\nсоздавать новые методические программы и разработки в области повышения квалификации и установления общего базового уровня технического персонала в области эксплуатации систем;\nсоздавать положительный эмоциональный и деловой фон во взаимоотношениях с заказчиком;\nиспользовать стандартные инструменты для обеспечения контроля, оценки и качества необходимого уровня программных продуктов.'),

       (N'09.04.01', N'Информатика и вычислительная техника', N'Очная', N'Магистратура', 2,
        N'Магистры, получившие дипломы в этой области, умеют:\n\nмоделировать изучаемые процессы и изделия;\nсоздавать новые способы и средства конструирования новых устройств и процессов;\nпродумывать процесс автоматизации принимаемых решений;\nсамостоятельно производить испытания и тестирования, обстоятельно изучать их результаты;\nвыполнять работу ассистента на профильных кафедрах ВУЗов в преподавательской сфере;\nразрабатывать и проводить учебные курсы, которые контролируют доценты и профессоры;\nписать методические пособия, применяемые студентами в процессе учебы;\nпроектировать автоматизированные системы, обоснованно выбирать аппаратно-программные средства информатизации и автоматизации;\nконструировать сложные изделия, к которым относятся также и программные комплексы, применяя средства автоматизации и передовой опыт;\nосуществлять проекты, направленные на создание программ, комплексов и информационных баз;\nсоздавать проекты по объединению информационных систем, опираясь на методики и типовые стандарты в области документооборота и логистической поддержки;\nанализировать продуктивность конструируемых систем, выполняя технико-экономический и функционально-стоимостной анализ;\nсоздавать документы, определяющие нормы и технические стандарты для разработанных программ и проектов.'),
       (N'09.04.02', N'Информационные системы и технологии', N'Очная', N'Магистратура', 2,
        N'Магистры информационных технологий и систем с легкостью справляются со следующими профессиональными обязанностями:\n\nопределяют основную проектную стратегию, обозначают цели, необходимые для достижений в области проектирования, выбирают основные показатели эффективности и продуктивности, а также ограничивают сферу применения информационных технологий и систем;\nразрабатывают персональные задания для исполнителей в области конструирования отдельных составляющих и элементов, используя при этом методологию системной инженерии;\nприводят к общему виду и классифицируют по типам принимаемые решения;\nорганизовывают конструктивную работу в сфере взаимодействия коллективов заказчика и производителя;\nосуществляют поиск компромиссных решений в долгосрочной и краткосрочной перспективе, находят наилучшие варианты;\nизучают и создают собственные объектные модели в сфере машино- и приборостроения, науки, образования и техники;\nиспользуют определенную методику и способы для выполнения моделирования объектов и процессов;\nпредсказывают направления и темпы развития в сфере информационных технологий и систем;\nобеспечивают методическое наполнение учебного процесса в различных образовательных учреждениях;\nразрабатывают новые идеи, способные составить высокую конкуренцию тем, что действуют на рынке.'),
       (N'09.04.04', N'Программная инженерия', N'Очная', N'Магистратура', 2,
        N'Для получения степени магистра по программной инженерии учащемуся предстоит научиться:\n\nсоздавать новые средства, способы и методы, необходимые для осуществления процесса изучения объектов программной инженерии, опираясь на унифицированные тенденции в сфере развития профессиональной области;\nразрабатывать программы и проекты, направленные на удовлетворение требований, а также осуществлять контрольные и управляющие функции;\nиспользовать системный подход, моделирование и структурный анализ для выполнения проектных задач;\nприменять новейшие технологии в области конструирования программных комплексов и систем, используя средства автоматизации в процессах планирования, управления и контроля над качеством проектируемой продукции;\nпланировать и координировать работу в процессе разработки программных приложений;\nвыступать в роли эксперта по обучению пользователей необходимым навыкам для использования продукта;\nпроводить анализ и делать выводы на основе полученных сведений, создавая технико-экономическую базу для обоснования принятых решений;\nделать выбор в пользу экономической или технической модели развития и сопровождать на всех этапах жизненного цикла программный продукт;\nоптимизировать принятые проектные и технологические решения, обеспечивая необходимые условия для поддержания высокого уровня качества объектов.');

DECLARE @firstTeacherID INT = (SELECT TOP 1 ID
                               FROM [Специальность]
                               ORDER BY ID);
DECLARE @firstSpecialityID INT = (SELECT TOP 1 ID
                                  FROM [Специальность]
                                  ORDER BY ID);
INSERT INTO [Группа]([Название], [КодСпециальности], [ЗачётнаяКнижкаСтаросты], [ТабельныйНомерКуратора])
VALUES (N'КИ20-07Б', @firstSpecialityID, NULL, @firstTeacherID),
       (N'КИ20-08Б', @firstSpecialityID + 2, NULL, @firstTeacherID + 1),
       (N'КИ16-07Б', @firstSpecialityID + 3, NULL, @firstTeacherID + 2),
       (N'КИ16-08Б', @firstSpecialityID + 5, NULL, @firstTeacherID + 3);

DECLARE @firstGroupID INT = (SELECT TOP 1 ID
                             FROM [Группа]
                             ORDER BY ID);
INSERT INTO [Студент]([Фамилия], [Имя], [Отчество], [Группа], [ГодПоступления])
VALUES (N'Муравьёв', N'Вячеслав', N'Геннадиевич', @firstGroupID, '2020-09-01'),
       (N'Сафонов', N'Мстислав', N'Федорович', @firstGroupID, '2020-09-01'),
       (N'Воронов', N'Терентий', N'Созонович', @firstGroupID, '2020-09-01'),
       (N'Козлова', N'Томила', N'Рудольфовна', @firstGroupID, '2020-09-01'),
       (N'Полякова', N'Изольда', N'Леонидовна', @firstGroupID, '2020-09-01'),
       (N'Михеева', N'Янина', N'Давидовна', @firstGroupID, '2020-09-01'),
       (N'Мухина', N'Милена', N'Ростиславовна', @firstGroupID, '2020-09-01'),

       (N'Дьячкова', N'Беатриса', N'Ильяовна', @firstGroupID + 1, '2020-09-01'),
       (N'Евсеева', N'Нинна', N'Мэлоровна', @firstGroupID + 1, '2020-09-01'),
       (N'Князев', N'Виссарион', N'Ильяович', @firstGroupID + 1, '2020-09-01'),
       (N'Панфилов', N'Моисей', N'Михайлович', @firstGroupID + 1, '2020-09-01'),
       (N'Вишняков', N'Юлиан', N'Григорьевич', @firstGroupID + 1, '2020-09-01'),
       (N'Самсонова', N'Агния', N'Парфеньевна', @firstGroupID + 1, '2020-09-01'),
       (N'Ермакова', N'Елена', N'Феликсовна', @firstGroupID + 1, '2020-09-01'),

       (N'Мишин', N'Харитон', N'Протасьевич', @firstGroupID + 2, '2016-09-01'),
       (N'Калинина', N'Мэри', N'Аристарховна', @firstGroupID + 2, '2016-09-01'),
       (N'Петухова', N'Наталия', N'Владленовна', @firstGroupID + 2, '2016-09-01'),
       (N'Назаров', N'Исак', N'Егорович', @firstGroupID + 2, '2016-09-01'),
       (N'Кузнецов', N'Варлаам', N'Ярославович', @firstGroupID + 2, '2016-09-01'),
       (N'Трофимова', N'Ванесса', N'Мироновна', @firstGroupID + 2, '2016-09-01'),
       (N'Мухин', N'Родион', N'Авксентьевич', @firstGroupID + 2, '2016-09-01'),

       (N'Шарапова', N'Богдана', N'Васильевна', @firstGroupID + 3, '2016-09-01'),
       (N'Шарапова', N'Моника', N'Филатовна', @firstGroupID + 3, '2016-09-01'),
       (N'Рожков', N'Флор', N'Ростиславович', @firstGroupID + 3, '2016-09-01'),
       (N'Красильников', N'Ипполит', N'Романович', @firstGroupID + 3, '2016-09-01'),
       (N'Белоусова', N'Бронислава', N'Валерьяновна', @firstGroupID + 3, '2016-09-01'),
       (N'Николаев', N'Корней', N'Альбертович', @firstGroupID + 3, '2016-09-01'),
       (N'Рыбаков', N'Даниил', N'Тарасович', @firstGroupID + 3, '2016-09-01');

UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 1 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 1;

UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 2 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 2;

UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 3 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 3;

UPDATE [Группа]
SET [ЗачётнаяКнижкаСтаросты] = (SELECT TOP 1 [НомерЗачетнойКнижки] FROM [Студент] WHERE [Группа] = 4 ORDER BY NEWID())
FROM [Группа]
WHERE ID = 4;

/*
Учились 2 семестра. В каждом было 3 зачета и 2 экзамена по четырем дисциплинам (по
одной дисциплине предусмотрены и зачет, и экзамен)

На каждую специальность по 8 дисциплин [ 4 на семестр D: ]
*/
INSERT INTO [Дисциплина]([Название], [КодСпециальности], [Семестр], [Объём], [Отчётность])
VALUES (N'История России', @firstSpecialityID, 1, 120, N'Зачёт'),
       (N'Алгебра и геометрия', @firstSpecialityID, 1, 120, N'Зачёт'),
       (N'Математический анализ', @firstSpecialityID, 1, 240, N'Зачёт и Экзамен'),
       (N'Теория вероятностей', @firstSpecialityID, 1, 180, N'Экзамен'),

       (N'Основы программирования', @firstSpecialityID, 2, 120, N'Зачёт'),
       (N'Алгоритмы и структуры данных', @firstSpecialityID, 2, 120, N'Зачёт'),
       (N'Теория и практика речевого общения', @firstSpecialityID, 2, 240, N'Зачёт и Экзамен'),
       (N'Философия', @firstSpecialityID, 2, 180, N'Экзамен'),


       (N'История России', @firstSpecialityID + 2, 1, 120, N'Зачёт'),
       (N'Алгебра и геометрия', @firstSpecialityID + 2, 1, 120, N'Зачёт'),
       (N'Математический анализ', @firstSpecialityID + 2, 1, 240, N'Зачёт и Экзамен'),
       (N'Теория вероятностей', @firstSpecialityID + 2, 1, 180, N'Экзамен'),

       (N'Решение оптимизационных задач программными средствами', @firstSpecialityID + 2, 2, 120, N'Зачёт'),
       (N'Базы данных', @firstSpecialityID + 2, 2, 120, N'Зачёт'),
       (N'Теория и практика речевого общения', @firstSpecialityID + 2, 2, 240, N'Зачёт и Экзамен'),
       (N'Философия', @firstSpecialityID + 2, 2, 180, N'Экзамен'),


       (N'Архитектура информационных систем', @firstSpecialityID + 3, 1, 120, N'Зачёт'),
       (N'Автоматизированное управление бизнес-процессами и финансами', @firstSpecialityID + 3, 1, 120, N'Зачёт'),
       (N'Теория и практика речевого общения', @firstSpecialityID + 3, 1, 240, N'Зачёт и Экзамен'),
       (N'Философия', @firstSpecialityID + 3, 1, 180, N'Экзамен'),

       (N'Космические информационные системы и технологии', @firstSpecialityID + 3, 2, 120, N'Зачёт'),
       (N'Безопасность и защита программных систем', @firstSpecialityID + 3, 2, 120, N'Зачёт'),
       (N'Вычислительные машины, системы, комплексы и сети', @firstSpecialityID + 3, 2, 240, N'Зачёт и Экзамен'),
       (N'Теория вероятностей', @firstSpecialityID + 3, 2, 180, N'Экзамен'),


       (N'Нейронные сети', @firstSpecialityID + 5, 1, 120, N'Зачёт'),
       (N'Операционные системы и ядра', @firstSpecialityID + 5, 1, 120, N'Зачёт'),
       (N'Теория и практика речевого общения', @firstSpecialityID + 5, 1, 240, N'Зачёт и Экзамен'),
       (N'Философия', @firstSpecialityID + 5, 1, 180, N'Экзамен'),

       (N'Цифровые технологии сложных инженерных объектов', @firstSpecialityID + 5, 2, 120, N'Зачёт'),
       (N'Разработка программно-информационных систем', @firstSpecialityID + 5, 2, 120, N'Зачёт'),
       (N'Корпоративные информационные системы', @firstSpecialityID + 5, 2, 240, N'Зачёт и Экзамен'),
       (N'Компьютерные системы и сети', @firstSpecialityID + 5, 2, 180, N'Экзамен');

DECLARE @firstDisciplineID INT = (SELECT TOP 1 ID
                                  FROM [Дисциплина]
                                  ORDER BY ID);

INSERT INTO [Преподавание]([Дисциплина], [Преподаватель])
VALUES (@firstDisciplineID, @firstTeacherID),
       (@firstDisciplineID + 1, @firstTeacherID + 1),
       (@firstDisciplineID + 2, @firstTeacherID + 2),
       (@firstDisciplineID + 3, @firstTeacherID + 3);


DECLARE @copyFirstDisciplineID INT = @firstDisciplineID;
WHILE EXISTS(SELECT *
             FROM [Дисциплина]
             WHERE ID = @copyFirstDisciplineID)
    BEGIN
        INSERT INTO [Преподавание]([Дисциплина], [Преподаватель])
        VALUES (@copyFirstDisciplineID, (SELECT TOP 1 [ТабельныйНомер] FROM [Преподаватель] ORDER BY NEWID()));

        SET @copyFirstDisciplineID = @copyFirstDisciplineID + 1;
    END

INSERT INTO [Изучение]([Студент], [Дисциплина], [Дата], [Оценка])
SELECT TOP 50 S.[НомерЗачетнойКнижки],
              D.ID,
              DATEADD(DAY, 40 + (CHECKSUM(NEWID()) % 30), '2020-01-01'),
              IIF(D.Отчётность = N'Зачёт', (0 + ABS(CHECKSUM(NEWID())) % 2), (2 + ABS(CHECKSUM(NEWID())) % 4))
FROM [Студент] AS S,
     [Дисциплина] AS D
ORDER BY NEWID()

COMMIT TRANSACTION