Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
ВнизКак пользоваться тригеррами .... Найти похожие ветки
← →
return (2006-08-29 17:16) [0]Как пользоваться тригеррами ? Как изменив одну таблицу, изменить несколько других автоматически?
Приведите пожалуйсто пример.
← →
Ega23 © (2006-08-29 17:21) [1]
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 ]
}
}
← →
Ega23 © (2006-08-29 17:22) [2]Пример:
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
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.046 c