我被要求实现一些代码,这些代码将更新MS SQL Server数据库中的一行,然后使用存储的proc将更新插入历史表中。 由于我们无法控制数据库,因此我们无法添加存储的proc来执行此操作。 我知道您可以在存储过程中进行更新,然后在另一个存储过程中调用execute。 我可以使用一个SQL命令将其设置为在代码中执行此操作吗?

===============>>#1 票数:1 已采纳

可以在同一条语句中运行它们(以分号分隔单独的命令),也可以使用事务来运行它们,以便在第二条失败时回退第一条语句。

===============>>#2 票数:1

您实际上并不需要为此存储的过程。 问题的实质归结为您是否可以控制所有插入物。 如果实际上您可以访问所有插入,则只需将插入包装到数据表中,然后将插入包装到历史表中就可以。 这将确保两者都完成以使“成功”发生。 但是,在事务中按顺序访问表时,您需要确保不先锁定historytable再锁定datatable,否则可能会出现死锁情况。

但是,如果您无法控制插入,则可以将触发器添加到某些数据库系统,从而使您可以访问修改,插入或删除的数据。 它可能会或可能不会为您提供所需的所有数据,例如谁执行了插入,更新或删除操作,但它会告诉您更改了什么。

===============>>#3 票数:0

您还可以创建sql触发器。

===============>>#4 票数:0

根据您的库,通常可以将两个查询放在一个命令字符串中,并用分号分隔。

===============>>#5 票数:0

信息不足-什么是SQL Server? 为什么有历史记录表?

触发器将执行此类操作。 MySQL的binlog可能对您更有用。

您说您不控制数据库。 您控制访问它的代码吗? 在此处添加日志,并将其完全排除在SQL Server之外。

===============>>#6 票数:0

谢谢大家的答复,以下是我最后要做的工作提要。 现在测试一下,如果发生故障,trans是否实际回滚。

sSQL = "BEGIN TRANSACTION;" & _
           " Update table set col1 = @col1, col2 = @col2" & _
           " where col3 = @col3 and " & _
           " EXECUTE addcontacthistoryentry @parm1, @parm2, @parm3, @parm4, @parm5, @parm6; " & _
           "COMMIT TRANSACTION;"

  ask by osp70 translate from so

未解决问题?本站智能推荐:

5回复

执行Insert命令并在Sql中返回插入的Id

嗨我在MVC4中使用C#将一些值插入到sql表中。 实际上我想插入值并返回最后插入记录的“ID”。 我使用以下代码。 插入时,ID在数据库中自动递增。 我知道ExecuteNonQuery表示影响行的数字。 而不是我使用 但不行。 请帮我解决这个问题。 是否有任
3回复

SQL Update命令执行插入而不是更新

我一直在开发一个数据库,其中的一个表具有以下设计: http://imageshack.us/scaled/landing/843/3z08.jpg 我尝试执行以下UPDATE命令: 这是执行UPDATE命令之前的数据表示形式: http://imageshack.us
4回复

在多个表上执行一个SQL命令(无需重写SQL命令)

我有一系列的SQL命令,我想在大约40个不同的表上运行。 必须有一种方法,而无需编写40个不同的命令... 我在SQL Server中运行它。 所有表都具有不同的名称,并且我要操作的列(下面的VariableColumn)的名称也有所不同。 我确实有一个表和列的名称列表。 该代
4回复

使用命令sql从另一个表插入表数据

在我的项目中,我需要从另一个表插入一个表数据。 我试图编写此sql代码。 但是,在插入数据时,此按选项排序不起作用。 这是我的代码: 上面的代码将数据插入数据库。 但不是订单格式。 我需要知道我们是否可以解决此问题。 谢谢。
6回复

在执行插入更新命令时从SQL Server搜索数据时出现TIMEOUT问题

我有一个用C#开发的Windows服务。 此服务将XML文件中的数据导入SQL Server数据库,导入到不同的表中。 这些XML文件很大。 500 MB大小的特定文件需要超过1小时才能导入到包含数百万行的表中。 我有一个在ASP.NET MVC中开发的Web应用程序,上面的数据库是
2回复

SQL插入执行条件检查

我编写了此SQL查询,如果在两个数据库1中的一个表中用户状态为“雇员”,则在两个不同的数据库database1和database2中找到了相同的名字,则返回用户的名字和姓氏。 现在,我需要将上面查询中使用的名字和姓氏与数据库“ database2”中的名字和姓氏进行比较,如果找到匹配项,
6回复

SQL命令执行多次?

我遇到的情况是我需要写多个具有相同值的行来设置一些表。 假设我必须添加120行并填充两列。 我在寻找一种捷径,而不是让插入行重复n次。 这个怎么做?
1回复

SQL-UNION,在执行以下命令时优先于第一个选择语句

我试图首先从“ GermanDB”数据库中打印出结果,同时还显示来自Boston DB的所有德语数据库中未包含的内容。 可以在一个查询中完成吗? 我的查询(粗体部分起作用,但未按我想要的方式排序)
2回复

如何在.sql文件中插入百万个插入命令

我有.sql文件,其中包含数百万个Insert命令,并且它们具有要插入到不同表中的insert语句。 当我通过在SQL SERVER MANAGEMENT中打开执行时,它说 内存不足,无法继续执行程序
2回复

从另一个域登录SQL

我正在尝试在Visual Studio /我的计算机的单独域上连接到SQL Server 2012。 (这是我在工作组中的个人计算机)。 我可以访问服务器,并且可以使用SQL身份验证正常登录,但希望通过Windows身份验证登录。 当我尝试时,出现以下错误: 该登录名来自不受信任