Вопрос

Эта публикация является обновлением (с кодом триггера) по сравнению с моей вчерашней публикацией

Я использую SQL Server 2000. Я пишу триггер, который выполняется, когда поле Applicant.AppStatusRowID

Таблица соискателя связана с таблицей Location, таблицей Company & amp; таблица AppStatus.

Моя проблема заключается в создании объединений в моем запросе.

При обновлении Applicant.AppStatusRowID я хочу получить значения из Applicant.AppStatusRowID, Applicant.FirstName, Applicant.Lastname, Location.LocNumber, Location.LocationName, Company.CompanyCode, AppStatus.DisplayText

Объединения будут:

Select * from Applicant A 
Inner Join AppStatus ast on ast.RowID = a.AppStatusRowID 
Inner Join Location l on l.RowID = a.LocationRowID 
Inner Join Company c on c.RowID = l.CompanyRowID 

Это должно быть вставлено в таблицу аудита (поля: ApplicantID, LastName, FirstName, Date, Time, Company, Number, Location Location, StatusDisposition, User)

Запрос триггера:

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

CREATE TRIGGER tri_UpdateAppDispo ON dbo.Test_App
For Update 
AS

declare @Approwid int
        Declare @triggername sysname
        Set @rowCnt = @@rowcount
        Set @triggername = object_name(@@procid)  

        If @rowCnt = 0
                    RETURN

        If Update(appstatusrowid)
        BEGIN

        -----------------------------------------------------------------------------
                    -- insert a record to the AppDispo table, if AppstatusRowid
                    -- is being Updated
                    -----------------------------------------------------------------------------
                    Insert AppDispo(AppID, LastName, FirstName, [DateTime],Company,Location,LocationName,
                    StatusDispo,[Username])

                                Select d.Rowid,d.LastName, d.FirstName, getDate(),C.CompanyCode,l.locnum,l.locname, ast.Displaytext,
                             SUSER_SNAME()+' '+User  
                                From     deleted d with(nolock) 
                            Inner join Test_App a with (nolock) on a.RowID = d.rowid
                            inner join location l with (nolock) on l.rowid = d.Locationrowid
                                            inner join appstatus ast with (nolock) on ast.rowid = d.appstatusrowid 
                                            inner join company c with (nolock) on c.rowid = l.CompanyRowid
                                            --Inner Join Deleted d ON a.RowID = d.RowID
                                            --Where (a.rowid = @Approwid)
        END
GO

Есть идеи?

Это было полезно?

Решение

Попробуйте использовать этот код

SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO

CREATE TRIGGER tri_UpdateAppDispo ON dbo.Test_App
For Update 
AS

declare @Approwid int
    Declare @triggername sysname
    Set @rowCnt = @@rowcount
    Set @triggername = object_name(@@procid)  

    If @rowCnt = 0
                RETURN

    If Update(appstatusrowid)
    BEGIN
    -----------------------------------------------------------------------------
                -- insert a record to the AppDispo table, if AppstatusRowid
                -- is being Updated
                -----------------------------------------------------------------------------
                Insert AppDispo(AppID, LastName, FirstName, [DateTime],Company,Location,LocationName,
                StatusDispo,[Username])
                            Select d.Rowid,d.LastName, d.FirstName, getDate(),C.CompanyCode,l.locnum,l.locname, ast.Displaytext,
                         SUSER_SNAME()+' '+User  
                            From     deleted d with(nolock),location l with (nolock),appstatus ast with (nolock),company c with (nolock)
                            where d.Locationrowid =l.rowid and
                                  d.appstatusrowid = ast.rowid  and
                                  c.rowid = l.CompanyRowid
    END GO

с этим кодом вы получите строку с удаленным обновлением (old_value)

увидимся.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top