Pea*_*Jam 8 sql sql-server triggers
我一直在 StackOverflow 和其他网站上搜索以解决我的错误,但没有成功,所以是时候发帖看看是否有人可以告诉我哪里出了问题。
我的系统有一个形式简单的 PowerApp。保存表单时,字段将写入 table1。然后,我想在 table1 上创建一个触发器,以便将每条新记录中的一个字段插入到 table2 中。
尽管我的代码中没有输出子句,但我收到以下错误:
请求的操作无效。服务器响应: Microsoft SQL:如果 DML 语句包含不带 INTO 子句的 OUTPUT 子句,则该语句的目标表“table1”不能具有任何启用的触发器。内部异常:Microsoft SQL:如果该语句包含不带 INTO 子句的 OUTPUT 子句,则 DML 语句的目标表“table1”不能有任何启用的触发器。
将我的代码剥离回以下内容仍然会引发相同的错误:
ALTER TRIGGER [dbo].[FormatID]
ON [dbo].[table1]
AFTER INSERT
AS
BEGIN
INSERT INTO [dbo].[table2](origID)
VALUES (1)
END
Run Code Online (Sandbox Code Playgroud)
任何建议请忽略,我觉得我好像错过了一些明显的东西......
您的应用程序将 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);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9712 次 |
| 最近记录: |