|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
05.05.2017, 16:26 | #1 |
Пользователь
Регистрация: 28.02.2016
Сообщений: 14
|
создание триггеров
Здравствуйте. помогите пожалуйста создать триггеры
|
05.05.2017, 16:39 | #2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
покажите свои наработки, конкретные вопросы и т.п.
Или в раздел Фриланс если вы не хотите ничего делать, а ищете кого-то, кто выполнит ваши задачи за вознаграждение.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
05.05.2017, 17:20 | #3 |
Пользователь
Регистрация: 11.04.2017
Сообщений: 64
|
Гы - лабораторная - а таблицы есть?
Триггер создается элементарно Код:
|
05.05.2017, 17:31 | #4 | |
Пользователь
Регистрация: 28.02.2016
Сообщений: 14
|
Цитата:
3.1 Создать триггеры контролирующие добавление (обновление) записей в таблицы, хранящие сведения о пассажирском и грузовом транспортах. Триггеры должны проверять, свободен ли указанный бокс ПОЛУЧИЛОСЬ ТАК CREATE TRIGGER [dbo].[Грузовой Транспорт после корректировки ] ON [dbo].[Грузовой транспорт] AFTER INSERT ,UPDATE AS BEGIN SET NOCOUNT ON; DECLARE @Box int SELECT @Box = [номер бокса] FROM ( SELECT i.[номер бокса] FROM inserted i JOIN [Пассажирский транспорт] t ON i.[номер бокса] = t.[номер бокса] AND i.[гос номер] <> t.[гос номер] UNION SELECT i.[номер бокса] FROM inserted i JOIN [Грузовой транспорт] t ON i.[номер бокса] = t.[номер бокса] AND i.[гос номер] <> t.[гос номер] ) d IF @Box IS NOT NULL BEGIN DECLARE @Msg varchar(255) SET @Msg = 'Бокс номер ' + Cast(@Box as varchar(10)) + ' уже занят другим автомобилем ' RAISERROR(@Msg, 16, 1) RETURN END END |
|
05.05.2017, 22:33 | #5 |
Пользователь
Регистрация: 11.04.2017
Сообщений: 64
|
Что будет в @Box, если ничего не найдет? Что сделает ошибка в триггере after? И какая задача стояла? Если сделать невозможным вставку - делайте не after а instead of. Select в переменную далеко не лучшее. Потому что если ничего не находит - то оставит предыдущее значение, а не нулл. А какое значение по-умолчанию в инте?
В общем - все от поставленой задачи зависит. Если просто показать, что есть занятые и все - то можно и так. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Тест "Типовые узлы на основе триггеров" | Aplika | Микроконтроллеры, робототехника, схемотехника, 3D принтеры | 0 | 07.06.2016 08:05 |
SQL SERVER. Помочь с составлением триггеров, функций и хранимых процедур | Косюра | Фриланс | 3 | 20.12.2013 18:24 |
БД Interbase, создание триггеров | HelpMe_IBase | БД в Delphi | 2 | 27.03.2011 16:59 |
InterBase 7, создание триггеров | Claster | БД в Delphi | 2 | 08.04.2009 12:19 |
Как получить ID для новой записи с использованием триггеров?(Firebird) | Paul Hindenburg | БД в Delphi | 20 | 01.06.2008 16:39 |