SQL Server Management Studio 20.2 总是出现:数据库中已经存在名'XXX'的对象

china ansen 0 信誉分
2024-09-20T12:44:18.8166667+00:00
IF OBJECT_ID('BUSINESS_IN_TRIGGER','TR') IS NOT NULL DROP TRIGGER BUSINESS_IN_TRIGGER
GO
CREATE TRIGGER BUSINESS_IN_TRIGGER ON BUSINESS_IN FOR INSERT,UPDATE,DELETE AS SET NOCOUNT ON

1、总是出现这个错误 20240920-203445.jpg ,虽然我已经提前DROP

2、环境 Intellisense 状态也已经启用 20240920204151.jpg,刷新也无效

SQL Server
SQL Server
Microsoft 关系数据库管理和分析系统的一个系列,用于实现电子商务、业务线和数据仓库解决方案。
149 个问题
{count} 票

1 个答案

排序依据: 非常有帮助
  1. CathyJi-MSFT 22,286 信誉分 Microsoft 供应商
    2024-09-23T06:06:13.1933333+00:00

    Hi @china ansen

    引用微软官网OBJECT_ID (Transact-SQL)

    不能使用 OBJECT_ID 查询非架构范围的对象,例如数据定义语言 (DDL) 触发器。 对于在 sys.objects 目录视图中找不到的对象,请通过查询相应的目录视图来获取对象标识号。 例如,若要返回 DDL 触发器的对象标识号,请使用 SELECT OBJECT_ID FROM sys.triggers WHERE name = 'DatabaseTriggerLog'。

    请试下下面的T-SQL;

    -- 判断触发器是否存在
    IF NOT EXISTS (
        SELECT * 
        FROM sys.triggers 
        WHERE name = 'BUSINESS_IN_TRIGGER'
    )
    BEGIN
        -- 如果触发器不存在,则创建触发器
        CREATE TRIGGER BUSINESS_IN_TRIGGER
        ON BUSINESS_IN
        FOR INSERT, UPDATE, DELETE
        AS
        BEGIN
            SET NOCOUNT ON;
            -- 在这里添加触发器逻辑
        END
    END
    ELSE
    BEGIN
        -- 如果触发器存在,则删除触发器
        DROP TRIGGER BUSINESS_IN_TRIGGER
    END
    
    

    如果回复有帮助,请点击接受答案并点赞,因为这可以帮助其他社区成员寻找类似的帖子。

    0 个注释 无注释

你的答案

问题作者可以将答案标记为“接受的答案”,这有助于用户了解已解决作者问题的答案。