相关疑难解决方法(0)

当触发器在表上时,不能将UPDATE与OUTPUT子句一起使用

我执行UPDATEOUTPUT查询:

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才能使它有效?

也可以看看

sql sql-server sql-server-2008-r2

59
推荐指数
2
解决办法
4万
查看次数

SQL插入使用select返回多个身份?

我使用选择插入到表中

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 lastinsertid sql-server-2008

12
推荐指数
1
解决办法
6212
查看次数

获取sql server 2008中多次插入的标识

您好
我将使用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

sql insert sql-server-2008

6
推荐指数
2
解决办法
7574
查看次数

如何将记录从互连表复制到不同数据库中的另一个表?

我有 3 个相互关联的表。表格的设计如下。

  • 第一个(PK:FirstID,vchar:名称,int:年份)
  • 第二(PK:第二个 ID,FK:第一个 ID,int:日,int:月)
  • 第三(PK:第三ID,FK:第二ID,int:速度,vchar:备注)

我正在尝试将 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)

sql t-sql database sql-server sql-server-2008

5
推荐指数
1
解决办法
916
查看次数

如何检索通过insert ... select插入的行的标识?

我通过类似于这个的查询插入记录:

insert into tbl_xyz select field1 from tbl_abc
Run Code Online (Sandbox Code Playgroud)

现在我想要检索插入记录的新生成的IDENTITY值.如何以最小的锁定量和最大的可靠性来做到这一点?

sql sql-server identity

4
推荐指数
1
解决办法
500
查看次数

过程中表值参数中的标识列,如何定义DataTable

是否可以将类型为"[int] IDENTITY(1,1)"的列的"table"类型的参数传递给过程,并使用作为输入参数传递的DataTable对象执行此存储过程?

我收到以下错误:"INSERT到表变量上不允许的标识列.表值参数\"@ xxxxx \"的数据不符合参数的表类型."

我能找到的唯一相关注释是"如果在表值参数中为标识列提供值,则必须为会话发出SET IDENTITY_INSERT语句."

似乎即使没有在表参数中设置PK,它也会在某个时刻自动设置.这种情况发生在哪里,如何避免?

ado.net sql-server-2008 table-valued-parameters

3
推荐指数
1
解决办法
7731
查看次数

在具有外键关系的表中插入2行,而不知道主表的主键

我在SQL Server Manager 2014中有以下数据库方案.

数据库方案

我正在Visual Studio中创建一个C#-windows应用程序,我想插入一个新的订单行和一个新的订单.问题是两个表的主键,在服务器管理器中自动生成,所以我还没有订单表的主键的值,但是我需要该值来填充orderLine的外键柱.如何插入这两行.

亲切的问候

c# sql database sql-server visual-studio

0
推荐指数
1
解决办法
4024
查看次数