Sequel 中是否有 last_insert_id 方法?

3

在插入数据后,我需要知道该行的ID,如何实现?

2个回答

2
根据Dataset#insert文档insert()的返回值通常是插入行的主键,但这取决于您使用的适配器。请注意保留HTML标签。

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]

当我使用Sequel插入时:

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]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接