Пометить с помощью триггера - PullRequest
0 голосов
/ 04 марта 2011
BEGIN
    SET NOCOUNT ON;

    IF (UPDATE( HighestDegreeDoc) OR UPDATE (GPA) OR UPDATE (CreditHours))     
    BEGIN
        UPDATE [dbo].[School]
        SET Uploaded = 1
        FROM dbo.School
        JOIN INSERTED i ON i.EmpID = dbo.School.RecID
        END
    RETURN         
END

ALTER TRIGGER [dbo].[TrigEdu]
ON [dbo].[Education]
AFTER UPDATE
AS
BEGIN
    SET NOCOUNT ON;

    IF NOT (UPDATE( HighestDegreeDoc) OR UPDATE (GPA) OR UPDATE (CreditHours))     
    RETURN

    UPDATE [dbo].[School]
    SET Uploaded = 1
    FROM dbo.School
    JOIN INSERTED i ON i.EmpID = dbo.School.RecID
END

Оба эти кода дают мне один и тот же результат. Я хочу только когда эти три поля измените один из них, затем School.RecID обновите. Но его обновление датируется любыми обновлениями, сделанными в любой области образования таблицы. (

1 Ответ

0 голосов
/ 04 марта 2011

При отключении обновления вы можете получить доступ как к новой, так и к старой версии записи. У вас есть Inserted, новая версия, вам просто нужно сравнить ее с Deleted, старой версией.

UPDATE dbo.School
SET Uploaded = 1
FROM dbo.School
JOIN INSERTED i ON i.EmpID = dbo.School.RecID
JOIN DELETED d ON d.EmpID = dbo.School.RecID
where i.HighestDegreeDoc != d.HighestDegreeDoc
or i.GPA != d.GPA
or i.CreditHours != d.CreditHours
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...