Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как пользоваться тригеррами .... [D7, MSSQL]


return ©   (2006-08-29 17:16:00) 

Как пользоваться тригеррами ? Как изменив одну таблицу, изменить несколько других автоматически?
Приведите пожалуйсто пример.


Ega23   (2006-08-29 17:22:00) [1]

Пример:

USE pubs
IF EXISTS (SELECT name FROM sysobjects
     WHERE name = 'employee_insupd' AND type = 'TR')
  DROP TRIGGER employee_insupd
GO
CREATE TRIGGER employee_insupd
ON employee
FOR INSERT, UPDATE
AS
/* Get the range of level for this job type from the jobs table. */
DECLARE @min_lvl tinyint,
  @max_lvl tinyint,
  @emp_lvl tinyint,
  @job_id smallint
SELECT @min_lvl = min_lvl,
  @max_lvl = max_lvl,
  @emp_lvl = i.job_lvl,
  @job_id = i.job_id
FROM employee e INNER JOIN inserted i ON e.emp_id = i.emp_id
  JOIN jobs j ON j.job_id = i.job_id
IF (@job_id = 1) and (@emp_lvl <> 10)
BEGIN
  RAISERROR ('Job id 1 expects the default level of 10.', 16, 1)
  ROLLBACK TRANSACTION
END
ELSE
IF NOT (@emp_lvl BETWEEN @min_lvl AND @max_lvl)
BEGIN
  RAISERROR ('The level for job_id:%d should be between %d and %d.',
     16, 1, @job_id, @min_lvl, @max_lvl)
  ROLLBACK TRANSACTION
END


Ega23   (2006-08-29 17:21:00) [2]


CREATE TRIGGER trigger_name
ON { table | view }
[ WITH ENCRYPTION ]
{
   { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }
       [ WITH APPEND ]
       [ NOT FOR REPLICATION ]
       AS
       [ { IF UPDATE ( column )
           [ { AND | OR } UPDATE ( column ) ]
               [ ...n ]
       | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )
               { comparison_operator } column_bitmask [ ...n ]
       } ]
       sql_statement [ ...n ]
   }
}


Наверх

Титульная страница Поиск, карта сайта Написать письмо