Вопрос № 117295: Здравствуйте уважаемые Эксперты!!!
Очень прошу помочь.
У меня есть две таблицы:
1)Детали с полями Название, Количество, Описание
2)Заказ с полями ЗНазвание, ЗКоличество
Помогите, пожалуйста, написать триггер, который при добавлени...
Вопрос № 117.295
Здравствуйте уважаемые Эксперты!!!
Очень прошу помочь.
У меня есть две таблицы:
1)Детали с полями Название, Количество, Описание
2)Заказ с полями ЗНазвание, ЗКоличество
Помогите, пожалуйста, написать триггер, который при добавлении данных в таблицу "Заказ"
автоматически проверял бы наличие требуемого количества соответствующих деталей в
таблице "Детали" и в случае не выполнения этого условия выдавал бы сообщение, а в случае
выполнения уменьшал бы количество деталей в таблице "Детали"
P.S. Пользуюсь MS SQL server 2000.
Заранее благодарю всех.
Отправлен: 07.01.2008, 03:04
Вопрос задал: Studentx86 (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Челноков Виктор Альбертович
Здравствуйте, Studentx86!
Попробуйте следующий тригер
CREATE TRIGGER [dbo].[Добавление]
ON [dbo].[Заказ]
AFTER INSERT
AS
BEGIN
declare @i int
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for trigger here
SELECT @i = Детали.Количество - inserted.ЗКоличество
FROM Детали INNER JOIN
inserted ON Детали.Название = inserted.ЗНазвание
if @i<0
begin
RAISERROR ('Деталей на складе меньше , чем заказано', 16, 1)
ROLLBACK TRANSACTION
end
UPDATE Детали
SET Количество = @i
FROM Детали INNER JOIN
inserted ON Детали.Название = inserted.ЗНазвание
END
Ответ отправил: Челноков Виктор Альбертович (статус: 5-ый класс)
Ответ отправлен: 07.01.2008, 07:52 Оценка за ответ: 5 Комментарий оценки: Огромное спасибо!! Всё коротко и ясно.
Очень выручили. Ещё раз спасибо!