sqlserver触发器增删改的写法

sqlserver触发器,增删改是写一个里比较好,还是分着写三个?有具体增删改的模板吗?

在SQL Server中,编写触发器时可以选择将增删改操作写在一个触发器中,也可以将它们分开写成三个触发器。每种方式都有其优缺点,取决于你的具体需求和设计。

写一个触发器:

  • 优点:减少了触发器的数量,简化了维护和管理。
  • 缺点:可能会导致一个触发器包含较多的逻辑,不够灵活,可读性可能会变差。

分开写三个触发器:

  • 优点:每个触发器只关注特定的操作,代码更加模块化,可读性更好,便于维护和理解。
  • 缺点:增加了触发器的数量,可能导致代码重复。

对于选择写一个触发器还是分开写三个触发器,取决于业务需求和个人偏好。如果你的业务逻辑比较简单,而且希望触发器逻辑简洁,可以考虑将增删改操作写在一个触发器中。如果你的业务逻辑较复杂,而且希望代码更加模块化和可读性更好,可以考虑将它们分开写成三个触发器。

以下是每种方式的一个简单示例:

  1. 写一个触发器:
CREATE TRIGGER tr_example
ON your_table
AFTER INSERT, UPDATE, DELETE
AS
BEGIN
    -- 增加操作逻辑
    IF EXISTS (SELECT 1 FROM inserted)
    BEGIN
        -- 插入逻辑
    END

    -- 修改操作逻辑
    IF EXISTS (SELECT 1 FROM inserted) AND EXISTS (SELECT 1 FROM deleted)
    BEGIN
        -- 更新逻辑
    END

    -- 删除操作逻辑
    IF EXISTS (SELECT 1 FROM deleted)
    BEGIN
        -- 删除逻辑
    END
END
  1. 分开写三个触发器:
-- 增加触发器
CREATE TRIGGER tr_insert_example
ON your_table
AFTER INSERT
AS
BEGIN
    -- 插入逻辑
END

-- 修改触发器
CREATE TRIGGER tr_update_example
ON your_table
AFTER UPDATE
AS
BEGIN
    -- 更新逻辑
END

-- 删除触发器
CREATE TRIGGER tr_delete_example
ON your_table
AFTER DELETE
AS
BEGIN
    -- 删除逻辑
END

以上示例中的触发器仅供参考,实际情况中需要根据你的业务逻辑和表结构来编写相应的触发器。请注意,触发器应该谨慎使用,确保触发器逻辑正确,并且不会导致性能问题。

触发器不建议写大量的东西,影响性能,sql server触发器和存储过程写起来差不多。你是要写插入触发器还是修改触发器?