我执行UPDATE与OUTPUT查询:
UPDATE BatchReports
SET IsProcessed = 1
OUTPUT inserted.BatchFileXml, inserted.ResponseFileXml, deleted.ProcessedDate
WHERE BatchReports.BatchReportGUID = @someGuid
Run Code Online (Sandbox Code Playgroud)
这句话很好,很好; 直到在表上定义了一个触发器.然后我的UPDATE陈述将得到错误334:
如果语句包含没有INTO子句的OUTPUT子句,则DML语句的目标表'BatchReports'不能具有任何已启用的触发器
现在,SQL Server团队在博客文章中解释了这个问题:
错误消息是不言自明的
他们还提供解决方案:
该应用程序已更改为使用INTO子句
除了我无法做出整篇博文的正面或反面.
所以让我问一下我的问题:我应该改变什么UPDATE才能使它有效?
我使用选择插入到表中
INSERT california_authors (au_id, au_lname, au_fname)
SELECT au_id, au_lname, au_fname
FROM authors
WHERE State = 'CA'
Run Code Online (Sandbox Code Playgroud)
说我有一个标识栏california_authors.我可以通过上面的特定插入插入所有ID,就像我最后可以得到@@ IDENTITY一样single insertion吗?
我不能使用select命令,california_authors因为可能存在先前插入的带过滤器的记录State = 'CA'
您好
我将使用SQL Server 2008中提供的一个TSQL一次插入10行.我想要插入行的IDENTITY.我认为下面的解决方案可以工作,但我不确定是否发生了其他插入,而我运行上一次插入会影响结果
INSERT INTO tableA VALUES (1,2), (3,4), (4,5), ....
DECLARE @LastID INT = @@IDENTITY
SELECT TOP(10) ID FROM tableA WHERE ID<=@LastID ORDER BY ID DESC
我有 3 个相互关联的表。表格的设计如下。
我正在尝试将 3 个相互链接的表中的记录从数据库 A 复制到数据库 B。所以我的 Transact-SQL 看起来像这样:
INSERT INTO First
(Name, Year)
SELECT Name, Year
FROM DB_A.dbo.First
WHERE Year >= 1992
INSERT INTO Second
(FirstID, Day, Month)
SELECT FirstID, Day, Month
FROM DB_A.dbo.Second S INNER JOIN
DB_A.dbo.First F ON S.FirstID = F.FirstID
WHERE Month > 6
INSERT INTO Third
(SecondID, Speed, Remark)
SELECT SecondID, Speed, Remark
FROM DB_A.dbo.Third T INNER JOIN
DB_A.dbo.Second S ON T.SecondID = S.SecondID INNER JOIN
DB_A.dbo.First F …Run Code Online (Sandbox Code Playgroud) 我通过类似于这个的查询插入记录:
insert into tbl_xyz select field1 from tbl_abc
Run Code Online (Sandbox Code Playgroud)
现在我想要检索插入记录的新生成的IDENTITY值.如何以最小的锁定量和最大的可靠性来做到这一点?
是否可以将类型为"[int] IDENTITY(1,1)"的列的"table"类型的参数传递给过程,并使用作为输入参数传递的DataTable对象执行此存储过程?
我收到以下错误:"INSERT到表变量上不允许的标识列.表值参数\"@ xxxxx \"的数据不符合参数的表类型."
我能找到的唯一相关注释是"如果在表值参数中为标识列提供值,则必须为会话发出SET IDENTITY_INSERT语句."
似乎即使没有在表参数中设置PK,它也会在某个时刻自动设置.这种情况发生在哪里,如何避免?
我在SQL Server Manager 2014中有以下数据库方案.

我正在Visual Studio中创建一个C#-windows应用程序,我想插入一个新的订单行和一个新的订单.问题是两个表的主键,在服务器管理器中自动生成,所以我还没有订单表的主键的值,但是我需要该值来填充orderLine的外键柱.如何插入这两行.
亲切的问候
sql ×5
sql-server ×5
database ×2
ado.net ×1
c# ×1
identity ×1
insert ×1
lastinsertid ×1
t-sql ×1