У меня есть две таблицы в двух разных базах данных Lab15DB_1 и Lab15DB_2.
Родительская таблица - Автор, а дочерняя таблица - Книга.
Вот они:
CREATE TABLE Author
(
AuthorId INT NOT NULL PRIMARY KEY,
AuthorName NVARCHAR(50) NOT NULL,
AuthorSurname NVARCHAR(50) NOT NULL,
)
CREATE TABLE Book
(
BookId INT NOT NULL PRIMARY KEY,
BookName NVARCHAR(50) NOT NULL,
BookType NVARCHAR(50) NOT NULL CHECK(BookType IN ('Science', 'Hobby', 'Cooking', 'Fishing', 'Nature', 'Favorites')),
PublishYear INT NOT NULL,
AuthorId INT NOT NULL,
Price MONEY CHECK (PRICE > 0.0)
)
Я хочу создать каскадное обновление с помощью триггеров.
Вот попытка создать триггер для каскадного обновления в таблице Author
:
CREATE TRIGGER UpdateAuthorTrigger
ON Author
FOR UPDATE
AS
DECLARE @intRowCount int
SELECT @intRowCount = @@ROWCOUNT
IF @intRowCount > 1
BEGIN
IF UPDATE(AuthorId)
BEGIN
UPDATE Author
SET AuthorId = AuthorId
/* some code for update Book*/
END
END
ELSE
IF @intRowCount = 1
BEGIN
IF UPDATE(AuthorId)
BEGIN
UPDATE Author
SET Author.AuthorId = (SELECT AuthorId FROM INSERTED)
FROM Author
INNER JOIN DELETED ON Author.AuthorId = DELETED.AuthorId
UPDATE Lab15DB_1.dbo.Book
SET Lab15DB_1.dbo.Book.AuthorId = (SELECT AuthorId FROM INSERTED)
FROM Lab15DB_1.dbo.Book
INNER JOIN DELETED ON Lab15DB_1.dbo.Book.AuthorId = DELETED.AuthorId
END
END
GO
С делом @intRowCount = 1
проблем нет, но с делом @intRowCount > 1
.
у меня проблемы.
Не могли бы вы дать мне совет?