【问题标题】:Error with IDENT_CURRENT - Invalid column nameIDENT_CURRENT 出错 - 列名无效
【发布时间】:2009-05-02 01:01:17
【问题描述】:

我正在尝试更新表中上次插入的列。我尝试创建这个存储过程:

CREATE PROCEDURE [dbo].[msp_AssociateEvent]
(
    @EventId int
)

AS

UPDATE tblFoodMenus set
EventID = @EventId

Where FoodMenuID = IDENT_CURRENT(tblFoodMenus) 

但它给了我这个错误:

无效的列名 tblFoodMenus

我是否正确使用了 IDENT_CURRENT?

附: FoodMenuID 是自动递增的 tblFoodMenus 的主键

【问题讨论】:

  • 您确定要这样做吗? 2 个用户同时添加记录呢?回滚(会增加 IDENT_CURRENT,但不会插入一行)呢?当表为空或被截断时怎么办(IDENT_CURRENT 将返回 1)。在大多数情况下,我认为这不是一个好主意....

标签: sql sql-server stored-procedures


【解决方案1】:

表名需要用引号引起来

Where FoodMenuID = IDENT_CURRENT('tblFoodMenus')

【讨论】:

    【解决方案2】:

    Mark Brackett 对金钱的评论是正确的 - ident_current 无法安全地为您生成您感兴趣的特定身份。几乎总是您希望在执行插入的代码中使用 scope_identity() 然后传递它在任何需要的地方。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 2021-07-18
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多