3

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

4

2 回答 2

2

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

于 2010-04-20T01:15:27.067 回答
1

我对 SQL-Server 和 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' )

数据集添加了唯一标识符,但如果 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]
于 2012-09-20T08:39:32.113 回答