0

nextval値のシーケンスを作成する方法があるかどうか疑問に思っていましたvarcharか? iSQL プラス、オラクルを使用しています。たとえば、、、、、で構成される販売テーブルsale_idがありprod_idます。ここで、次のようにしてデータを挿入します。cust_namesale_name

insert into sales
select sale_id_seq.nextval,
trunc(dbms_random.value(1,100)),
(code for assigning random string for sale_name)
cust_id
from customer;
4

2 に答える 2

1

あなたの質問は意味がありません。varcharのNEXTVALはどうなりますか?

varchar列に数値を格納したい場合はできますが、格納しないでください。数値を数値列に保持するのが常に最善です。

のストリームを生成したい場合A, B, C ... Z, AA, AB ... AZ, AAAは、通常のシーケンスを取り、それを基数26(または基数36 1,2 ...9, A, B ... Z, 10, 11 ... 1A)に変換する関数を作成できます。しかし、それは明確な利益がない何かのための多くの努力です。

2009/00000001, 2009/00000002コード制御テーブルと呼ばれるものを使用して実行できる、などのより洗練されたシリーズが必要な場合。これは、最後に割り当てられた値を保持する手作りのテーブルです。ここでも、次の値を生成するためにいくつかの特注コードが必要になります。このアプローチにはいくつかの重大な制限があります。特に、挿入をシリアル化することです。コードはテーブルに対してロックを発行する必要があるため、最初のユーザーがコミットを発行するまで、2番目のユーザーはCUSTOMERにレコードを挿入できません(またはロールバック)。

編集

DBMS_RANDOMが機能しないと言う理由がわかりません。それは明らかにします:

SQL> select dbms_random.string('U', 5)
  2  from dual
  3  /

DBMS_RANDOM.STRING('U',5)
--------------------------------------------------------

IROGT

SQL>
于 2009-08-24T03:07:10.653 に答える
0

テストデータを生成するための何かが必要な場合は、Swingbench/Data Generatorをご覧ください。

于 2009-08-24T05:32:50.893 に答える