gpt4 book ai didi

sql - 如果语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句不能有任何启用的触发器

转载 作者:行者123 更新时间:2023-12-05 02:57:42 25 4
gpt4 key购买 nike

我一直未能通过 StackOverflow 和其他网站来解决我的错误,所以有时间发帖看看是否有人可以告诉我哪里出错了。

我的系统有一个具有简单表单的 PowerApp。保存表单时,字段将写入 table1。然后我想在 table1 上创建一个触发器,以便将每个新记录的一个字段插入到 table2 中。

尽管我的代码中没有输出子句,但我收到以下错误:

The requested operation is invalid. Server Response: Microsoft SQL: The target table 'table1' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause. inner exception: Microsoft SQL: The target table 'table1' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause.

将我的代码剥离回以下内容仍然会引发相同的错误:

ALTER TRIGGER [dbo].[FormatID] 
ON [dbo].[table1]
AFTER INSERT
AS
BEGIN

INSERT INTO [dbo].[table2](origID)
VALUES (1)

END

任何建议请开火,我觉得我好像遗漏了一些明显的东西......

最佳答案

您的应用程序将 dml 语句的插入/删除值输出为结果集。当表(dml 的目标)上有触发器时,这是不可能的

create table dbo.table1(id int);
create table dbo.table2(origID int);
go

CREATE OR ALTER TRIGGER [dbo].[FormatID]
ON [dbo].[table1]
AFTER INSERT
AS
BEGIN

INSERT INTO [dbo].[table2](origID)
VALUES (1)

END;


--succeeds
insert into dbo.table1(id)
values (1);
go

--fails
insert into dbo.table1(id)
output inserted.id --output cannot be a resultset(in the void) because there is a trigger
values(1);

--succeeds
declare @outputtable table (id int);
insert into dbo.table1(id)
output inserted.id into @outputtable(id)--output into a table
values(1);

关于sql - 如果语句包含没有 INTO 子句的 OUTPUT 子句,则 DML 语句不能有任何启用的触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59662266/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com