【问题标题】:Is there a last_insert_id method for Sequel?Sequel 是否有 last_insert_id 方法?
【发布时间】:2010-04-19 23:00:15
【问题描述】:

插入后,我需要知道行中的ID,我该怎么做?

【问题讨论】:

    标签: ruby sequel


    【解决方案1】:

    根据Dataset#insert documentationinsert() 的返回值通常是插入行的主键,但这取决于您使用的适配器。

    【讨论】:

      【解决方案2】:

      我对 SQL-Server 和唯一标识符进行了同样的尝试,但没有成功。不返回唯一标识符。

      摘自我的定义:

      CREATE TABLE [dbo].[MyTable](
           [ID] [uniqueidentifier] NOT NULL,
           [Data] [nvarchar](255) NULL
      )
      ALTER TABLE [dbo].[MyTable] ADD  DEFAULT (newid()) FOR [ID]
      

      当我插入续集时:

      DB[:MyTable].insert( :Data => 'data' )
      

      数据集添加了唯一标识符,但如果 Dataset#insert 为 nil,则返回代码。

      DB[:MyTable].insert(:ID => Sequel.function(:newid),  :Data => 'data' )
      

      你会得到同样的结果。

      我试过了

      key = Sequel.function(:ID)
      DB[:MyTable].insert(:ID => key,  :Data => 'data' )
      

      但是'key'只是函数调用,而不是值。使用Sequel.function(:ID).f 你会得到一个“无效的列名ID'。”-错误

      但如果你使用模型,你会得到唯一标识符:

      class MyTable < Sequel::Model(:MyTable); end 
      entry = MyTable.create(:Data => 'data')
      $uniqueidentifier = entry[:ID]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-09
        • 1970-01-01
        • 1970-01-01
        • 2020-10-25
        • 2014-07-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多