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

Триггеры

25.12.2015, 00:22. Показов 759. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Разбираюсь в триггерах, хотелось бы получить наглядный пример) заранее благодарю за помощь)

Имеем следующие таблицы:
book (book_name, book_qt)
author (author_name, author_birthdate, author_dateofdeathe, author_country)
authorbook (author_num, book_num)

Задание: добавить любого автора и книгу. при удалении из таблицы authorbook нужно, чтобы эта информация автоматически удалялась из таблиц author и book
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.12.2015, 00:22
Ответы с готовыми решениями:

Триггеры
Добpый дeнь! Помогитe пожaлуйстa нaписaть тpиггepы. Тpиггep, котоpый пpи удaлeнии дaнных о товape (Tovars), копиpуeт всю инфоpмaцию о...

Триггеры
Помогите созданием триггера. у меня выходить конфликт. Как можно создать работающий триггер. INSERT / UPDATE / DELETE например если...

Триггеры и C#
Добрый день.Возник вопрос по триггерам.Есть программа написанная в C#,которая реализует просмотр и изменение таблиц из sql и есть триггер...

5
27 / 55 / 19
Регистрация: 18.08.2014
Сообщений: 329
25.12.2015, 20:09
uol7,
по аналогии напишите свои
триггер на вставку с использованием курсора
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/****** Object:  Trigger [dbo].[Client_insert]    Script Date: 04.03.2015 13:15:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Client_insert]    
   ON  [dbo].[Client]    
   INSTEAD OF INSERT
AS 
BEGIN
    SET NOCOUNT ON;
    DECLARE cur CURSOR FOR
        SELECT [fio],[series_document],[number_document] FROM inserted
    OPEN cur
    DECLARE @fio VARCHAR(100)
    DECLARE @series_document INT
    DECLARE @number_document INT
    DECLARE @id_document INT
    --select @fio = fio from inserted
    --Select @series_document = series_document from inserted where fio = @fio
    --Select @number_document = number_document from inserted where fio = @fio
    --Select @id_document = number_document from inserted where fio = @fio
    FETCH NEXT FROM cur
            INTO @fio,@series_document,@number_document, @id_document
    WHILE @@FETCH_STATUS = 0
    BEGIN
            IF EXISTS (SELECT id FROM [Client] WHERE fio = @fio AND series_document = @series_document AND number_document =@number_document AND id_document=@id_document)
            BEGIN 
                RAISERROR ('Такой клиент уже есть в базе', 16, 1)
                ROLLBACK TRANSACTION
            END
            ELSE
                BEGIN
                INSERT INTO dbo.[Client](fio,series_document,number_document,id_document)
                VALUES(@fio, @series_document, @number_document  ,@id_document)
                END
    FETCH NEXT FROM cur
        INTO @id_stadion,@dataVremya,@id_tyr,@id_document
    END
    CLOSE cur
    DEALLOCATE cur
END
триггер на апдейт
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
28
29
30
31
32
33
34
/****** Object:  Trigger [dbo].[empl_update]    Script Date: 04.03.2015 13:15:14 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[empl_update] 
   ON  [dbo].[Employees]
   INSTEAD OF UPDATE
AS 
BEGIN
    SET NOCOUNT ON;
    DECLARE @id INT
    DECLARE @fio datetime
    DECLARE cur CURSOR FOR
        SELECT * FROM INSERTED
    OPEN cur
    SELECT @id= id FROM inserted
    FETCH NEXT FROM cur
        INTO @id, @fio
    WHILE @@FETCH_STATUS = 0
    IF EXISTS(SELECT id FROM Employees WHERE fio=@fio)
        BEGIN
            RAISERROR ('Такой сотрудник уже принят на работу', 16, 1)
            ROLLBACK TRANSACTION
        END
    ELSE
    BEGIN
            UPDATE Employees SET fio=@fio WHERE [id]=@id
            FETCH NEXT FROM cur
                INTO @id, @fio
        END
    CLOSE cur
    DEALLOCATE cur
END
0
0 / 0 / 0
Регистрация: 15.12.2014
Сообщений: 7
25.12.2015, 20:49  [ТС]
Спасибо Вам) буду разбирать)
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
26.12.2015, 20:02
Цитата Сообщение от uol7 Посмотреть сообщение
Задание: добавить любого автора и книгу. при удалении из таблицы authorbook нужно,
T-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
28
29
30
31
32
33
34
35
36
create database DB1;
------
use DB1;
-----
create Table book( b_id int identity ,
                   b_autor_name nvarchar(30),
                   b_Title nvarchar(30)
                  );
-----------
insert into book(b_autor_name, b_Title) values (N'Вася', N'Про бизнес'),
                                               (N'Петя', N'Про кулинарию'),
                                               (N'Юра', N'про программирование'),
                                               (N'Денис', N'Про здоровье'),
                                               (N'Максим', N'Про любовь')
select * from book
----------------
create Table DeleteBook( b_id int,
                         b_autor_name nvarchar(30),
                         b_Title nvarchar(30)
                       );
 
----Триггер.... При удалении запись из таблицы book сохраняем таблицу DeleteBook
create  trigger TR_Book
on book
after delete 
as
begin
 insert into DeleteBook
 select * from deleted
end;
 
---- Проверяем триггер .... Удаляю запись из таблици book где  b_autor_name = N'Юра'
delete from book where b_autor_name = N'Юра'
 
----проверяем все нормально работаеть 
select * from DeleteBook
1
 Аватар для pincet
1654 / 1153 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
26.12.2015, 20:05
Цитата Сообщение от Nikeys174 Посмотреть сообщение
триггер на вставку с использованием курсора
курсор-то зачем? чтобы был?
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,600
26.12.2015, 20:07
Цитата Сообщение от Nikeys174 Посмотреть сообщение
по аналогии напишите свои
триггер на вставку с использованием курсора
Зачем курсоры ? и какой " аналоги " ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.12.2015, 20:07
Помогаю со студенческими работами здесь

Триггеры
Подскажите пожалуйста! Как сделать, чтобы правильно работало? (сотрудник должен быть не моложе 18 лет) CREATE TRIGGER Mobile1 ON...

Триггеры не работают
Код триггера не менял , да и базу данных почти не трогал ,данные заполнял через приложение работали отлично в VS2010 Замечаю ,...

Процедуры и триггеры.
Здравствуйте читающие! Возник вопрос, связанный возможно с процедурами, возможно с триггерами(в следствии этого такой заголовок). ...

Триггеры MSSql
Доброго времени суток, подскажите как создавать триггеры для процедур, не могу найти никакой информации. Само задание: 1)Триггер,...

Триггеры MS SQL
Нужно написать триггер, который одновременно запретит: -уменьшать зарплату -удалять работников Как все это реализовать в одном...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru