Sequel有last_insert_id方法吗?

时间:2010-04-19 23:00:15

标签: ruby sequel

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

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

我尝试使用SQL-Server和uniqueidentifier,但没有成功。不返回uniqueidentifier。

从我的定义中摘录:

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' )

数据集添加了唯一标识符,但数据集#插入的返回代码为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”。“ -error

但如果您使用模型,则会获得uniqueidentifier:

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