3

挿入後、行から ID を知る必要があります。どうすればよいですか?

4

2 に答える 2

2

Dataset#insert documentationによると、戻り値insert()は通常、挿入された行の主キーですが、使用しているアダプターによって異なります。

于 2010-04-20T01:15:27.067 に答える
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' )

ただし、「キー」は値ではなく関数呼び出しのみです。「無効な列名ID」が表示されますSequel.function(:ID).f。-エラー

ただし、モデルを使用すると、uniqueidentifier が得られます。

class MyTable < Sequel::Model(:MyTable); end 
entry = MyTable.create(:Data => 'data')
$uniqueidentifier = entry[:ID]
于 2012-09-20T08:39:32.113 に答える