简体   繁体   中英

Triggers in SQL Server - error “Invalid Object Name”

I created this trigger but I get an error

Invalid object name 'dbo.informacao'

I had another trigger that I deleted but it had a different name. What can the problem? The query compiled without errors so I am assuming I did nothing wrong

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER TRIGGER [dbo].[informacao]
ON [dbo].[FolhaAuxiliar]
AFTER INSERT, UPDATE
AS 
BEGIN
    SET NOCOUNT ON;

    DECLARE @codOperacao int, @codFuncionario int, 
            @codEquipamento int, @dataInicio datetime, 
            @dataFim datetime, @produto int, @folha int,
            @quantP int, @quantD int, @setorFuncionario int

    SELECT 
        @codOperacao = i.CodOperação, 
        @codFuncionario = i.CodFuncionário, 
        @codEquipamento = i.CodEquipamento, 
        @dataInicio = i.DataInicio, 
        @dataFim = i.DataFim,  
        @produto = i.Produto,
        @folha = i.Folha,
        @quantP = i.qntdproduzida,
        @quantD = i.qntddesperdiçada
    FROM 
        inserted i

    SELECT @setorFuncionario = f.Setor
    FROM Funcionário f
    WHERE f.CodFuncionario = @codFuncionario

    IF (@setorFuncionario != 2)
    BEGIN
        RAISERROR('O funcionário não pertence ao setor das operações', 10,1);
        ROLLBACK TRANSACTION;
        RETURN;
    END
    ELSE IF(@codEquipamento IN (SELECT f.CodEquipamento FROM FolhaAuxiliar f WHERE DataFim IS NULL))
    BEGIN
        RAISERROR('O equipamento já está a ser utilizado', 10,1);
        ROLLBACK TRANSACTION;
        RETURN;
    END
    ELSE IF (@codFuncionario IN (SELECT f.CodFuncionário FROM FolhaAuxiliar f WHERE DataFim IS NULL))
    BEGIN
        RAISERROR('O funcionário já se encontra a realizar outra operação', 10,1);
        ROLLBACK TRANSACTION;
        RETURN;
    END
    ELSE
    BEGIN
        INSERT INTO [FolhaAuxiliar](CodOperação, CodFuncionário, CodEquipamento, DataInicio, Produto, Folha, qntdproduzida, qntddesperdiçada, DataFim)
            SELECT 
                CodOperação, CodFuncionário, CodEquipamento, DataInicio, 
                Produto, Folha, qntdproduzida, qntddesperdiçada, DataFim
            FROM 
                inserted
    END
END

You cannot create two or more objects with the same name (schema included) in a DB. You can only alter an object if it's already been created first.

You can also use the following if unsure:

CREATE OR ALTER TRIGGER [dbo].[informacao]
...

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM