Sequel有last_insert_id方法吗?

发布于 2024-08-29 10:40:55 字数 29 浏览 7 评论 0原文

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

After an insert, I need to know the ID from the row, how can I do that?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

拔了角的鹿 2024-09-05 10:40:55

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

According to the Dataset#insert documentation, the return value for insert() is usually the primary key of the inserted row, but it depends which adapter you're using.

油焖大侠 2024-09-05 10:40:55

我尝试使用 SQL-Server 和 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' )

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

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

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

I tried the same with SQL-Server and a uniqueidentifier, but without success. The uniqueidentifier is not returned.

Extract from my Definition:

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

When I insert with Sequel:

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

the dataset is added with a uniqueidentifier, but the return code if Dataset#insert is nil.

With

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

you get the same result.

I tried

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

but 'key' is only the function call, not the value. With Sequel.function(:ID).f you get an "Invalid column name ID'."-error

But if you use a Model, the you get the uniqueidentifier:

class MyTable < Sequel::Model(:MyTable); end 
entry = MyTable.create(:Data => 'data')
$uniqueidentifier = entry[:ID]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文