Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
0 / 0 / 1
Регистрация: 04.05.2014
Сообщений: 21

Триггер на пересечение дат (T-SQL)

02.11.2016, 17:41. Показов 1901. Ответов 1

Студворк — интернет-сервис помощи студентам
Задача: создать триггер, который запрещает создавать заказ на установку, которая в это время будет занята другим заказчиком.
Есть таблица заказов с датой начала заказа, окончания заказа и кодом установки, есть таблица установок.
Создал следующий триггер:
T-SQL
1
2
3
4
5
6
7
8
9
10
11
CREATE TRIGGER не_заказывай_занятые_установки
ON заказ FOR insert
as
if exists (
    select * from inserted
    right join заказ on заказ.расположениеКод = inserted.расположениеКод
    where (Заказ.датаНачала<=inserted.датаНачала and inserted.датаНачала<=Заказ.датаОкончания)
        or (Заказ.датаНачала<=inserted.датаОкончания and inserted.датаОкончания<=Заказ.датаОкончания))
begin
    raiserror('Данная рекламная утановка уже занята в этот промежуток времени', 16, 1)
end
Но он срабатывает при попытке вставить любой заказ. Пробовал left, rigth, inner join'ы.
Как сделать?

Добавлено через 27 минут
Пока что пришел к такому:
T-SQL
1
where not (Заказ.датаНачала<inserted.датаОкончания or inserted.датаОкончания<Заказ.датаНачала)
вроде работает, но смущает меня join. Как правильнее объединить в данном случае inserted и заказ?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
02.11.2016, 17:41
Ответы с готовыми решениями:

Триггер на пересечение сроков бронирования
Всем привет Никак не могу разобраться как написать триггер чтобы он не допускал пересечения дат бронирования мест в отеле по одному...

Запрос на пересечение дат
Помогите создать запрос есть 3 таблицы: Водители (штатный номер, ФИО, дата рождения) Торговые точки (id, наименование,...

Триггер для сравнения дат
Необходимо создать триггер, который будет сравнивать даты и сообщать, если Дата_заезда больше чем Дата_выезда. Вот что я наскребла ...

1
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
02.11.2016, 18:40
Условию в WHERE сама запись в inserted тоже удовлетворяет, ибо везде нестрогие неравенства.
Обратите внимание: триггер запускается после вставки, так что все записи inserted уже есть в таблице.

И убедиться, что RAISERROR приводит к откатыванию транзакции.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.11.2016, 18:40
Помогаю со студенческими работами здесь

Триггер для сравнения 2х дат и ID в одной таблице и вывода ошибки
Здравствуйте! Имеется таблица &quot;Заявки&quot; Мне нужно написать триггер, который сравнивает 2 даты/времени при одиннаковом ID...

Триггер ! - SQL Server
Задание 1.создать триггер на удаление для таблицы gruppa. Помогите исправить заранее спасибо create trigger del on gruppa for...

Триггер MS SQL Server
Необходимо написать триггер, согласно которому будет выполняться следующее условие. Если в группе состоит более 15 человек, то создается...

Триггер: создание. SQL
В Уфе, УГАТУ запросили создать триггер на мою БД. Имеется 2 таблицы. Как реализовать, чтобы при вводе данных в одну их этих таблиц...

Триггер на автоподсчёт SQL
Товарищи нужна помощь( Помогите плиз. У меня есть таблица в базе в которой храниться куча разных столбцов часть из которых подписаны как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru