Sql 如何防止错误数据的更新?
我有一个场景,比如我想在表中插入一条记录,然后 通过获取最后插入的行Id来更新相同的记录,因此现在 问题是,如果另一个用户在第一个记录之前插入新记录 记录得到更新,所以根据我的场景,我得到最后一个 插入的行Id,在本例中,更新应用于最后一行Sql 如何防止错误数据的更新?,sql,sql-server,Sql,Sql Server,我有一个场景,比如我想在表中插入一条记录,然后 通过获取最后插入的行Id来更新相同的记录,因此现在 问题是,如果另一个用户在第一个记录之前插入新记录 记录得到更新,所以根据我的场景,我得到最后一个 插入的行Id,在本例中,更新应用于最后一行 对于第一个问题,请提供任何解决方案。这是针对SQL Server的。 如果表中有标识列,则在插入后使用@@Identity变量或SCOPE\u Identity()函数获取插入行的标识值,然后在更新时使用Where子句中的标识字段 像这样的 INSERT I
对于第一个问题,请提供任何解决方案。这是针对SQL Server的。 如果表中有标识列,则在插入后使用
@@Identity
变量或SCOPE\u Identity()
函数获取插入行的标识值,然后在更新时使用Where子句中的标识字段
像这样的
INSERT INTO MyTable(FullName)
VALUES('My Name')
SELECT @IdVal = SCOPE_IDENTITY()
UPDATE MyTable SET Phone='1234' WHERE IdCol = @IdVal
这是针对SQL Server的 如果表中有标识列,则在插入后使用
@@Identity
变量或SCOPE\u Identity()
函数获取插入行的标识值,然后在更新时使用Where子句中的标识字段
像这样的
INSERT INTO MyTable(FullName)
VALUES('My Name')
SELECT @IdVal = SCOPE_IDENTITY()
UPDATE MyTable SET Phone='1234' WHERE IdCol = @IdVal
为什么上次插入的行Id不是特定的行Id(主键)?您是否需要专门针对最后一行?而不是先插入再更新,您不能简单地将更新的数据包含在初始插入中吗?不,根据我的需要,我必须在插入后更新它。您使用的是什么数据库?您应该只使用实际使用的数据库进行标记。为什么上次插入的行Id不是特定的行Id(主键)?您是否需要专门针对最后一行?而不是先插入再更新,您不能简单地将更新的数据包含在初始插入中吗?不,根据我的需要,我必须在插入后更新它。您使用的是什么数据库?您应该只使用实际使用的数据库进行标记。@jawed。不幸的是,如果您使用的是SQL Server,那么最好的方法是使用
OUTPUT
子句。这个答案不应该被否决。我不提供答案,因为这个问题有不兼容的数据库标记。@jawed。不幸的是,如果您使用的是SQL Server,那么最好的方法是使用OUTPUT
子句。这个答案不应该被否决。我没有提供答案,因为这个问题有不兼容的数据库标签。