【问题标题】:Output insert and table values when doing insert into插入时输出插入和表值
【发布时间】:2013-04-19 14:17:04
【问题描述】:

我在 MS SQL Server 2008 中插入一个表(它是来自同一个表的值的副本)并且想要获取插入的输出值。我想获取 select 语句的 id 值(下例中的 t.id),INSERTED.id 工作得很好

create table tmp.tbl_inserted (fromId int, toId int)

INSERT INTO mytable (name)
OUTPUT t.id, INSERTED.id INTO tmp.tbl_inserted
SELECT t.name FROM mytable t

提前致谢

【问题讨论】:

  • 不确定您在这里真正要问的是什么。 tmp.tbl_inserted 的相关性是什么?你声明它而不使用它。 t.id 究竟应该来自哪里?
  • 错字,现在改了。 t.id 应该来自表 mytable
  • 啊,好吧,更有意义:) 我看到 Damien 打败了我。很高兴它有效!
  • 这正是我的情况。我从没想过我会设法找到一个现有的问题。

标签: sql-server sql-server-2008 tsql


【解决方案1】:

您不能直接通过INSERT 进行操作:

from_table_name

是一个列前缀,它指定包含在 DELETE、UPDATE 或 MERGE 语句的 FROM 子句中的表,用于指定要更新或删除的行。

请注意,INSERT 没有被提及。

你必须做的是作弊并使用MERGE

MERGE INTO mytable m
USING (name,id FROM mytable) t ON 1=0
WHEN NOT MATCHED THEN INSERT (name) VALUES (t.name)
OUTPUT t.id, INSERTED.id INTO tmp.SizeCurveGroup_inserted
;

【讨论】:

  • 像魅力一样工作!谢谢
  • 我不敢相信我真的找到了这个问题和答案。这正是我需要的答案。
猜你喜欢
  • 2016-12-08
  • 1970-01-01
  • 2020-10-13
  • 2012-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多