С Новым годом! Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 31

Нужна информация о создании триггеров

09.06.2014, 20:49. Показов 1959. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет! Начал изучать триггеры, самые простые понял как делаются, но возникло много вопросов. Подскажите где найти хорошее, доступное пособие по ним? Видео-уроков мало в основном все на английском, в статьях есть прилично инфы но сложно искать. Может кто-то подчеркнул для себя пособие какое-нибудь хорошее?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.06.2014, 20:49
Ответы с готовыми решениями:

Нужна любая информация
Люди нужна инфа, желательно на русском но можно и на англицком. По двум темам: оптимизация SQL запросов в реляционных базах данных,...

Нужна информация по форматам LDF и MDF
Добрый день. подскажите пожалуйста по эти форматам что-нибудь. у меня есть некий прибор, который записывает показания каждые 15 минут в эти...

Нужна информация о создании форм
Дайте ссылку(ки) пожалуйста с объяснением создания форм "uses formsABC". Кроме уже известных мне источников: 1)Web справка по модулю...

15
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
10.06.2014, 11:56
CREATE TRIGGER (Transact-SQL)
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 31
10.06.2014, 21:11  [ТС]
Возник такой вопрос: Нужно запретить удаление строки из таблицы если в этой строке есть логическое поле равное false. Суть вопроса собственное в том: как запросить это логическое значение из строки которую мы собираемся удалять?
Запросить столбец с логическими полями я могу, а как запросить значение строки этого столбца которую мы удаляем?
0
119 / 111 / 47
Регистрация: 09.07.2013
Сообщений: 209
10.06.2014, 22:06
Deleted
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 31
10.06.2014, 23:35  [ТС]
Можно поконкретнее я думал об этом уже но до конца так и не дошел
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
11.06.2014, 09:49
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ALTER TRIGGER DelTrig
   ON  dbo.TABLE
   AFTER DELETE
AS 
BEGIN
 
IF (SELECT FLAG FROM deleted d) =1
BEGIN
    RAISERROR ('Error!', 16, 1);
    ROLLBACK TRANSACTION;
    RETURN 
END
 
END
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
11.06.2014, 09:55
Цитата Сообщение от nixon93nixon Посмотреть сообщение
Oracle 11 SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
ALTER TRIGGER DelTrig
   ON  dbo.TABLE
   AFTER DELETE
AS 
BEGIN
 
IF (SELECT FLAG FROM deleted d) =1
BEGIN
    RAISERROR ('Error!', 16, 1);
    ROLLBACK TRANSACTION;
    RETURN 
END
 
END
Этот говнокод нерабочий из-за скалярного выражения в IFе.
Попробуйте удалить две записи одним DELETEом, если не верите
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
11.06.2014, 11:08
мон
Цитата Сообщение от iap Посмотреть сообщение
Этот говнокод нерабочий из-за скалярного выражения в IFе.
Попробуйте удалить две записи одним DELETEом, если не верите
можно подробнее, сейчас по быстрому настрогал себе пример, все отработало
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
11.06.2014, 11:13
Цитата Сообщение от nixon93nixon Посмотреть сообщение
мон
можно подробнее, сейчас по быстрому настрогал себе пример, все отработало
Вот это сравнение
T-SQL
1
IF (SELECT FLAG FROM deleted d) = 1
допустимо только в случае, если подзапрос вернёт 1 или 0 записей.
Иначе будет сообщение об ошибке.
Если Вы утверждаете, что удаляли одним DELETEом две записи,
и сервер ничего не сказал, то рассказываете нам сказки.
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
11.06.2014, 11:27
возможно в 2008 сервере при удалении нескольких записей триггер срабатывает отдельно для каждой,
потому как если взять две записи где поле flag = 1, то они не удаляться, взял две с flag = 0 удалились, взял одну с flag=1 и еще одну с flag=0, выбило сообщение и не удалились обе, тут согласен, есть промах

ну и в общем принцип работы триггера на удаление, я считаю, отобразил, а то что это гавнкод или нет, спорить не буду, так оно и есть, этож пример
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
11.06.2014, 11:39
Цитата Сообщение от nixon93nixon Посмотреть сообщение
возможно в 2008 сервере при удалении нескольких записей триггер срабатывает отдельно для каждой
невозможно!
Цитата Сообщение от nixon93nixon Посмотреть сообщение
так оно и есть, этож пример
А кому нужен пример говнокода в виде серьёзной рекомендации начинающему?
По отношению к нему это медвежья услуга.
0
 Аватар для nixon93nixon
63 / 63 / 21
Регистрация: 08.02.2013
Сообщений: 262
11.06.2014, 11:49
Цитата Сообщение от iap Посмотреть сообщение
невозможно!
ну как есть говорю, чего мне врать-то
Цитата Сообщение от iap Посмотреть сообщение
А кому нужен пример говнокода в виде серьёзной рекомендации начинающему?
По отношению к нему это медвежья услуга.
возможно и медвежья, но мне кажется, что понимание приходит с простых примеров, пускай и гавнокод.
Это же форум - напиши не гавнокод человеку в помощь, я только за.
0
1116 / 761 / 183
Регистрация: 27.11.2009
Сообщений: 2,272
11.06.2014, 12:45
Цитата Сообщение от Lexa44 Посмотреть сообщение
как запросить значение строки этого столбца которую мы удаляем?
Мы удаляем миллион строк за раз, а не одну.
Исходите из этого.
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 31
12.06.2014, 18:25  [ТС]
Спасибо за ответы. Не получается вывести предупреждающее сообщение.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
USE [Library]
GO
/****** Object:  Trigger [dbo].[datereturn]    Script Date: 12.06.2014 18:24:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author:      <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
ALTER TRIGGER [dbo].[datereturn]
   ON  [dbo].[Control] 
   AFTER UPDATE
AS 
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    IF (SELECT COUNT(*) FROM [Control] WHERE ([RETURN DATE]>[plan RETURN DATE])) >0
    -- Insert statements for trigger here
    BEGIN
    print'Книга возращена после положенного срока'
    -- Insert statements for trigger here
    END
END
Так он мое сообщение не выводит, а если добавить rollback, то запретится редактирование, как быть?
0
1313 / 945 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
12.06.2014, 21:22
T-SQL
1
2
3
4
5
6
7
8
9
create trigger...as
if exists(
  select *
  from deleted
  where [логическое поле]=0
  )
begin
  raiserror('логическое условие истинно',10,1);
end
0
0 / 0 / 0
Регистрация: 23.12.2013
Сообщений: 31
12.06.2014, 22:57  [ТС]
Сейчас попробую спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2014, 22:57
Помогаю со студенческими работами здесь

Нужна информация о создании графических интерфейсов на java в intellij idea
Добрый день. Уважаемые форумчани. Подскажите пожалуйста, где можно посмотреть и почитать информацию по разработки графических интерфейсов в...

СРОЧНО НУЖНА ПОМОЩЬ! Нужна информация о тест оборудовании
Доброго времени суток! Интересует информация (книги, статьи, научные статьи, сайты, зарубежная приветствуется) о проектировании...

Реализовать передачу - прием информации. С одного ПК на другой, реализовать нужна с помощью (winapi с++). Нужна информация или книги
Необходимо реализовать передачу - прием информации. С одного ПК на другой, реализовать нужна с помощью (winapi с++). Нужна информация или...

Нужна информация о CD-R...
Прошу помощи!! Мне необходимо написать программу на подобе nero. Т.е выбор привода, задание скорости записи, вид дисков(CD/DVD-R,...

Нужна информация
Пишу скрипт на подсчет строк и символов в файле. Скрипт на сайте должен высчитывать сколько строк и символов написал пользователь,и...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
сукцессия микоризы: основная теория в виде двух уравнений.
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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и источниками (напряжения, ЭДС и тока). Найти токи и напряжения во всех элементах. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru