web-dev-qa-db-ja.com

ストアドプロシージャで新しいGUIDを生成する方法は?

現在、テーブルに新しい行を挿入するストアドプロシージャがあります。

insert into cars
(id, Make, Model)
values('A new Guid', "Ford", "Mustang")

したがって、主キー「id」はGUIDです。 C#コードで新しいGuidを作成する方法は知っていますが、ストアドプロシージャ内では、プライマリキー値の新しいGuidを生成する方法がわかりません。

誰かが私を助けてくれますか?

ありがとう!

86
Mr Cricket

SQL Serverでは、関数 [〜#〜] newid [〜#〜] を使用できます。 C#を使用しているので、SQL Serverを使用していると思います。他のデータベースシステムにも同様の機能があるはずです。

_select NEWID()
_

Oracleを使用している場合は、 SYS_GUID() 関数を使用できます。この質問に対する答えを確認してください: Generate a GUID in Oracle

170
Adam Porad

これを試して:

SELECT NewId()
29
BradB

あなたはあなたの質問でこれについて尋ねませんでしたが、主キーにGUIDを使用することは常に良いアイデアではないことを指摘する価値があると思います。インデックスでGUIDが使用されている場合。代わりに整数値である ID列 を使用することを検討しましたか?

読むのに役立つかもしれない記事がいくつかあります。

12
Adam Porad

MySQLでは、UUID()です。クエリは次のようになります。

insert into cars
(id, Make, Model)
values(UUID(), "Ford", "Mustang")

uuidを再利用する場合は、次のように実行できます。

set @id=UUID();
insert into cars
(id, Make, Model)
values(@id, "Ford", "Mustang");
select @id;
1
Fusca Software

質問の形式で(注意を払ってください!)

insert into cars
  (id, Make, Model)
  values(NEWID(), "Ford", "Mustang")
0
Regianni