Каскадное обновление sql триггера - PullRequest
0 голосов
/ 06 мая 2018

У меня есть две таблицы в двух разных базах данных 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.

у меня проблемы.

Не могли бы вы дать мне совет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...