是否可以读取事务中某行的先前状态?

时间:2017-03-31 21:15:30

标签: .net sql-server

我有.NET代码创建一个事务,在这个事务中,它执行插入/更新,然后进行验证。如果验证失败,则会抛出异常以回滚更改。

我需要在此VB.NET代码中添加验证规则,该规则需要检查当前状态和行的先前状态(即:插入/更新之前的状态)。基本上,我的验证规则允许从A-> B但不是B-> A的状态转换。

如何查询当前事务之外的行的状态?换句话说,我可以在插入/更新之前查询行的状态吗?

1 个答案:

答案 0 :(得分:0)

您还可以使用返回值创建存储过程。在存储过程中,您应首先选择要更新的行,分配要返回的变量,继续更新(您也可以在此处验证),然后返回分配的变量,如下所示:

DECLARE @MyTableVar table(Name varchar(50),Age int);
DECLARE @Name,
        @Age
BEGIN
    SET @Name = (SELECT Name from YourTable WHERE ID=1)
    SET @Age = (SELECT Age from YourTable WHERE ID=1)

    -- Here goes your update statement..

END

RETURN @MyTableVar