触发不更新sql

问题描述

| 尽管此操作在完成时已成功完成,但是没有所需的更新。 创建触发触发器1 在dbo上。[table1] 更新 如 声明@Id int; SELECT @Id =来自dbo的Issue_Id。[表1] 插入dbo。[存储]     选择ID,标题,项目,问题     来自dbo。[table2]     ID = @Id 我做错了什么,还是不能在触发器范围内使用变量? 非常感谢     

解决方法

其他人都正确回答了您应该使用
inserted
和一个连接来建立适当的触发器。但: 根据您对他人答案的评论,您永远不要尝试从触发器访问您自己数据库之外的任何资源,而要从另一台服务器访问。 尝试使触发器活动与跨服务器活动脱钩-说让您的触发器在队列表中添加一行(或使用真实服务代理队列),并由一个独立的组件负责服务这些请求。 否则,如果有网络问题,不仅触发会中断,而且还会强制回滚原始更新,这会使您的本地数据库无法使用。 这也意味着独立组件可以应对超时,并执行适当的重试等。     ,支持多行更新
CREATE TRIGGER Trigger1 On dbo.[table1] FOR UPDATE
AS
SET NOCOUNT ON

INSERT INTO dbo.[storage]
    SELECT t.Id,t.Title,t.project,t.Problem
    FROM dbo.[table2] t
        JOIN INSERTED I ON t.ID = I.ID
GO
如果table2实际上是table1(这更有意义:
table1
storage
table2
有什么关系?)...
CREATE TRIGGER Trigger1 On dbo.[table1] FOR UPDATE
AS
SET NOCOUNT ON

INSERT INTO dbo.[storage]
    SELECT Id,Title,project,Problem
    FROM INSERTED
GO
    ,一次性处理多个更新和
inserted
表:
CREATE TRIGGER Trigger1
On dbo.[table1] 
FOR UPDATE
AS

INSERT INTO dbo.[storage]
    SELECT Id,Problem
    FROM dbo.[table2] t2
         JOIN Inserted i ON i.Issue_ID = t2.Id
    ,请通过以下建议。 代替下面的行
SELECT @Id = Issue_Id FROM dbo.[table1]
它必须被跟随。
SELECT Issue_Id FROM Inserted
以下是更新的内容。
CREATE TRIGGER Trigger1
On dbo.[table1] 
FOR UPDATE
AS
SET NOCOUNT ON
Declare @Id int;

With CTE as 
(
    SELECT Issue_Id FROM Inserted I
    Inner Join [table1] T on T.Issue_Id  = I.Issue_Id
)

INSERT INTO dbo.[storage]
SELECT Id,Problem
FROM dbo.[table2]
Inner Join CTE c on c.Issue_Id = Id
了解更多信息 在SQL Server中,要插入/修改或删除的记录自己占据在DML触发器中可用的两个临时表中。这些表已插入和删除。 INSERTED表已插入或更新了记录。 DELETED表具有正在更新或删除的记录的旧状态。     ,下面的行应删除 SELECT @Id =来自dbo的Issue_Id。[表1] 应该跟随。 SELECT Issue_Id FROM已插入     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...