Требуется триггер, который срабатывает на изменения в таблице командами INSERT и UPDATE.
При выполнении запроса INSERT в таблицу IZD: триггер должен найти по дате последнюю запись с avtomat_id = 1 в таблице NZP.
Если на данную минуту в таблице nzp нет записи с avtomat_id = 1, то:
- её нужно создать и к значению поля number из последней записи с avtomat_id = 1 добавить единицу
- от значения dt до текущего времени создать записи на каждую минуту со значением number из последней записи.
При выполнении запроса UPDATE в таблице IZD для поля Ves_o: триггер должен найти по дате последнюю запись с avtomat_id = 2 в таблице NZP.
Если на данную минуту в таблице nzp нет записи с avtomat_id = 2, то:
- её нужно создать, к значению поля number из последней записи с avtomat_id = 2 добавить единицу, с avtomat_id = 1 отнять единицу
- от значения dt до текущего времени создать записи на каждую минуту со значением number из последней записи.
Требования к триггеру:
- Должен работать в базах данных Microsoft SQL Server версий 2000-2005
- Правильно обрабатывать дату и время разных форматов
- Не должно быть пропусков минут
- Не должно быть одинаковых минут (например: 21:24:14 и 21:24:45)
- Должен нормально отрабатывать при смене дня, месяца и года
Примечание: секунды можно не учитывать (записывать нули)
Таблицы:
CREATE TABLE [dbo].[nzp](
[dt] [datetime] NOT NULL,
[avtomat_id] [tinyint] NOT NULL,
[number] [tinyint] NOT NULL
) ON [PRIMARY]
CREATE TABLE [dbo].[IZD](
[Num_IZD] [varchar](9) NULL,
[Ves_o] [real] NULL CONSTRAINT [DF_IZD_Ves_o] DEFAULT (0)
) ON [PRIMARY]
Данные в nzp вида:
dt avtomat_id number
2014-09-09 21:21:00.000 1 7
2014-09-09 21:22:00.000 1 7
2014-09-09 21:23:00.000 1 8
2014-09-09 21:24:00.000 1 8
2014-09-09 21:25:00.000 1 8
2014-09-09 21:26:00.000 1 8
2014-09-09 21:27:00.000 1 12
2014-09-09 21:24:00.000 2 15
2014-09-09 21:25:00.000 2 16
2014-09-09 21:26:00.000 2 21
2014-09-09 21:27:00.000 2 21
Данные в IZD вида:
Num_IZD Ves_o
000000011 0
000000058 7
000000091 0
000000037 0
Результат работы: скрипт для создания триггера.
Опубликован 01.11.2014 в 23:02
Заказ находится в архиве