Ошибка При Срабатывании Триггера

Статус
Закрыто для дальнейших ответов.

Cristi-a-n

New member
16.05.2013
3
0
#1
Здравствуйте. Нужно создать три триггера: на insert, delete, update так, чтобы при изменении таблицы вручную, триггер срабатывал и выполнял изменения и в другой таблице.
Триггер на insert работает верно:
Код:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Триггер_ins]
ON [dbo].[Registration] FOR INSERT
AS
IF @@ROWCOUNT=1
BEGIN
IF(SELECT Books.bCopyes
FROM Books,inserted
WHERE Books.bCode=inserted.bCode)<=0
BEGIN
ROLLBACK TRAN
PRINT 'Отмена. Книги нет в наличии!'
END
ELSE
BEGIN
DECLARE @y INT
SELECT @y=bCode
FROM inserted
UPDATE Books
SET bCopyes=bCopyes-1
WHERE bCode=@y
END
END
Триггер на delete аналогичный:
Код:
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[Триггер_del]
ON [dbo].[Registration] FOR DELETE
AS
IF @@ROWCOUNT=1
BEGIN
DECLARE @y INT
SELECT @y=bCode
FROM deleted
UPDATE Books
SET bCopyes=bCopyes+1
WHERE bCode=@y
END
Он срабатывает верно при выполнении запроса DELETE. Но при удалении строки из таблицы SQL выдает ошибку: " ... Сведение об ошибке: Значения строки обновлены или удалены, либо не делают строку уникальной, либо они изменяют несколько строк (строк: 2)".

С триггером на update такая же проблема, ошибка аналогичная. Подскажите, в чем проблема. Заранее спасибо.
 

-master-

Well-known member
14.01.2012
616
12
#2
А зачем они вообще нужны? ваши копии можно и без триггеров определить, они только усложняют жизнь
 

-master-

Well-known member
14.01.2012
616
12
#4
Тогда объясняйте что к чему.
фраза "Он срабатывает верно при выполнении запроса DELETE. Но при удалении строки из таблицы" непонятная, делете и удаление - одно и тоже, как оно не работает и работает?
 

Cristi-a-n

New member
16.05.2013
3
0
#5
Не работал при удалении из таблицы вручную, не запросом, а нажатием delete на клавиатуре или с помощью контекстного меню.
Но проблема уже решена, не был задан первичный ключ в таблице.
 
Статус
Закрыто для дальнейших ответов.