【问题标题】:How to execute a query just before insert in MSSQL Server如何在插入 MSSQL Server 之前执行查询
【发布时间】:2021-09-30 13:05:10
【问题描述】:

我需要在每次插入表之前执行一个查询。我尝试使用而不是

--insert into tbl_Exlog(ActionName) values('Insert')
--select * from tbl_Exlog

ALTER Trigger [dbo].[trgExLogTest] on [dbo].[tbl_ExLog] 
Instead of Insert
as

begin
    insert into tbl_ExLog (ActionName) values('trigger')
end


 but it restricts the actual insert which I don't want.

输出: 动作名称 触发

插入丢失

【问题讨论】:

  • “它限制了实际的插入”这是什么意思?
  • 我的意思是我需要执行这两个查询。 1. 插入前 2. 插入前
  • 是的...为什么INSTEAD OF TRIGGER 会阻止你这样做?它没有。
  • 发布您的实际尝试可能会告诉我们您在这里做错了什么。
  • 我的触发器查询正在按预期执行。但是插入查询没有执行

标签: sql-server triggers


【解决方案1】:

INSERT 丢失了,是的,在您的 TRIGGER 中。您从未告诉 SQL Server INSERT 数据,所以它不会 INSERT 它。一个INSTEAD OF INSERT“做到完全它在锡上说的”; '做这个 而不是 INSERT'。你告诉 SQL Server INSERTtbl_ExLog 中插入一行而不是,但不要告诉INSERT 到你实际再次插入的表中。

在您的触发器中定义INSERT

ALTER TRIGGER [dbo].[trgExLogTest] ON [dbo].[tbl_ExLog] 
INSTEAD OF INSERT AS
BEGIN
    INSERT INTO dbo.tbl_ExLog (ActionName) VALUES ('trigger');

    INSERT INTO dbo.trgExLogTest ({Column List})
    SELECT {Column List}
    FROM inserted;
END;

【讨论】:

  • 谢谢 全部完成,唯一的问题是输入参数,我需要从 c# 端插入
猜你喜欢
  • 2021-08-16
  • 1970-01-01
  • 2020-04-04
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 2010-10-11
  • 1970-01-01
  • 2016-04-24
相关资源
最近更新 更多