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

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

09.06.2014, 20:49. Показов 1957. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход 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 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru