問題タブ [uniqueidentifier]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1860 参照

asp.net - aspnet_users が int をインクリメントするのではなく、id に guid を使用するのはなぜですか? ユーザーフィールドの拡張に関するボーナスポイント

aspnet_users が int をインクリメントするのではなく、id に guid を使用するのはなぜですか?

また、これを他のテーブルで主キーとして使用しない理由はありますか? 過去に使用したほとんどのアプリが通常の int システムを使用していることを知っているので、少し奇妙に感じます。

また、この ID を使用して、追加のユーザー設定などの拡張詳細テーブルと照合しようとしています。GUID と int を含むリンク テーブルを使用することも検討していましたが、そうは思わないので、それを決定しました。実際には、ユーザー ID を public int として持つ必要があります。

私は int を持ちたいと思っていますが (ユーザールックアップなどを行う方が簡単だと感じます stackoverflow.com/users/12345/user-name ) 、ユーザー名を取得するだけなので、これを運ぶ必要はないと思いますユーザーの int を検索する必要がある場合は、ルックアップがさらに複雑になります。

これについて何か助けてくれてありがとう。

0 投票する
4 に答える
3423 参照

cocoa - コアデータ:一意のID番号を生成

私はそのように見えるウィンドウを持っています: UI

レコードを追加するたびに、修復IDを、テーブルでまだ使用されていない一意の番号に設定する必要があります。たとえば、ID番号1、2、3がある場合、+を押すと、IDフィールドは「4」に設定されます。また、テーブル内のレコードの1つが削除され、ID番号が1、2、4の場合、+を押すと、レコードIDの番号は3に設定されます。

現在、カスタムのManagedObjectクラスがあり、次のように宣言しています。

日付を今日の日付に設定するため。

この一意のレコードIDを実装するにはどうすればよいですか?

ありがとう!

0 投票する
4 に答える
4443 参照

sql - uniqueidentifier を主キーとして使用し、パラメーター化されたクエリを使用してクライアント アプリケーションから挿入する

uniqueidentifier を主キーとして使用するデータベースを作成しました。最終的にこのようなパラメータ化されたクエリを実行しようとしています。(insert into someTable (uniqueID) Values('76c14693-5475-4224-ba94-7d30c919ac59') (uniqueID is my PK). この挿入ステートメントは、SQL Server Management Studio で実行すると問題なく実行されますが、私のコードから実行してみてください。

エラー: IDENTITY_INSERT が OFF に設定されている場合、テーブル 'someTable' の ID 列に明示的な値を挿入できません。

これを調べたところ、IDENTITY_INSERT をオンにすることに関する多くの提案がありますが、それらはすべてストアド プロシージャを使用しています。パラメータ化されたクエリを使用してこれを行う必要があります。または、データベースで新しく作成された GUID を取得する方法が必要です。これは、ある時点で誰もが必要とするもののようです。簡単な解決策はありますか?

PS。その ID を使用して他のテーブルにレコードを追加する必要があるため、ID が必要です。

編集:

問題のテーブルの構造は次のとおりです

0 投票する
4 に答える
1045 参照

sql - is it good to have primary keys as Identity field

I have read a lot of articles about whether we should have primary keys that are identity columns, but I'm still confused.

There are advantages of making columns are identity as it would give better performance in joins and provides data consistency. But there is a major drawback associated with identity ,i.e.When INSERT statement fails, still the IDENTITY value increases If a transaction is rolled back, the new IDENTITY column value isn't rolled back, so we end up with gaps in sequencing. I can use GUIDs (by using NEWSEQUENTIALID) but it reduces performance.

0 投票する
9 に答える
8808 参照

tsql - 2つの整数の複合キーから一意の整数キーを作成する簡単な方法はありますか?

質問にあまり関係のないさまざまな理由で、2つの整数で構成された複合キーを含むテーブルがあり、これら2つの数値から単一の一意キーを作成したいと思います。私の最初の考えはそれらを連結することでしたが、(51,1)の複合キーが(5,11)と同じ一意のキー、つまり511になることに気付いたとき、すぐに問題に遭遇しました。

生成された整数が開始整数のペアに一意になるように、2つの整数から整数を生成する賢い方法はありますか?

編集:印象的な量の数学に直面した後、私が含めるべき詳細の1つは、問題のキーのサイズであることに気付きました。元のペアでは、最初のキーは現在6桁であり、システムの存続期間中はおそらく7桁のままになります。2番目のキーはまだ20を超えていません。これらの制約を考えると、問題はそれほど困難ではないように見えます。

0 投票する
6 に答える
34962 参照

sql - ビューが呼び出されるたびに同じままになる一意のIDをSQLServerビューに作成することは可能ですか?

ビューを作成するために結合しているテーブルが10個あります。各テーブルからIDを選択するだけですが、ビューでは、各IDを複数回表示できますが、すべてのIDの組み合わせは常に一意になります。このビューに一意のIDになる別の列を作成する方法はありますか?

一意のIDを保存し、それを使用してビューに対してクエリを実行し、他のすべてのIDを取得できるようにしたいと思います。

0 投票する
30 に答える
719294 参照

php - ランダムでユニークな英数字の文字列を生成するには?

検証リンクで使用するために、数字と文字を使用してランダムで一意の文字列を生成するにはどうすればよいでしょうか? たとえば、Web サイトでアカウントを作成すると、リンクが記載されたメールが送信され、アカウントを確認するにはそのリンクをクリックする必要があります。

PHPを使用してそれらの1つを生成するにはどうすればよいですか?

0 投票する
5 に答える
14592 参照

sql-server - SQL Server 2005で空白のuniqueidentifierを識別するにはどうすればよいですか?

uniqueidentifierこのようなストアドプロシージャを使用しています

00000000-0000-0000-0000-000000000000

これは単純なことのように思えますが、これが空白であることをどのように識別できますuniqueidentifierか?

このような値を取得した場合、DDB72E0C-FC43-4C34-A924-741445153021Xを実行したい

このような値を取得した場合、00000000-0000-0000-0000-000000000000Yを実行します

ゼロを数えるよりもエレガントな方法はありますか?

前もって感謝します

0 投票する
10 に答える
1773 参照

algorithm - グローバルに一意ではない識別子の生成

UID の生成に関するさまざまな質問をいくつか見つけましたが、私が知る限り、ここでの要件はやや独特です (ha)。

要約すると、「ローカル」で一意の非常に短い ID を生成する必要がありますが、「グローバル」または「ユニバーサル」で一意である必要はありません。制約は単に美的またはスペースの問題に基づいているのではなく、これが本質的にハードウェア タグとして使用されており、ハードウェアの制約の対象であるという事実によるものです。仕様は次のとおりです。

ハード要件

  • ID には 10 進数のみを含める必要があります (基になるデータは BCD です)。
  • ID の最大長は 12 文字 (数字) です。
  • オフラインで生成する必要があります - データベース/Web 接続が常に利用できるとは限りません!

ソフト要件

  • 暦年および/または月から開始したいと考えています。これは多くのエントロピーを浪費するので、これについて妥協したり、完全に廃棄したりすることは気にしません (必要な場合)。
  • 特定のマシンから生成された ID は連続して表示されます。
  • ID はマシンごとに並べ替える必要はありませ。たとえば、マシン 1 が [123000、124000、125000] を吐き出し、マシン 2 が [123500、123600、124100] を吐き出してもまったく問題ありません。
  • ただし、集合的な意味でシーケンシャルに見えるほど優れています。[200912000001, 200912000002, 200912000003, ...] のような ID のセットは完璧ですが、これは明らかに複数のマシン間で拡張できません。

使用シナリオ:

  • このスキームの範囲内の ID は、10 台、多くても 100 台の異なるマシンから生成されます。
  • 生成される ID は合計で数百万を超えることはありません。
  • 同時実行性は非常に低いです。1 台のマシンが ID を生成する頻度は、5 分ごとほどではありません。また、ほとんどの場合、一度に 5 台以下のマシンが同じ時間または同じ日に ID を生成します。特定のマシンで 1 日以内に生成される ID は 100 未満であり、すべてのマシンで 500 未満であると予想しています。
  • 少数のマシン (3 ~ 5) が、ID の 80% 以上を生成する原因となる可能性が最も高いでしょう。

12 桁未満の 10 進数を使用して 100 ミリ秒または 10 ミリ秒の精度までタイムスタンプをエンコードできることを私は知っています。私が SO でこれを尋ねている理由は、人間が読める年/月をそこに組み込むか、ソース マシンに関する情報の一部をエンコードするか、またはその両方を行いたいからです。

誰かがこれらのソフト要件の妥協を手伝ってくれることを望んでいます...または、他の要件を考慮してそれらのどれも不可能な理由を説明してください。

(PS 私の「ネイティブ」言語は C# ですが、素晴らしいアイデアがあれば、どの言語のコードでも擬似コードでも問題ありません。)

アップデート:

これで寝る機会ができたので、実際にやろうとしていることは、デフォルトでタイムスタンプエンコーディングを使用し、個々のインストールが独自の 2 または3 桁のマシン ID。そうすれば、ID をいじり、人間が読み取れる情報を詰め込みたい顧客は、一意性を保証する独自の方法を整理することができ、誤用については責任を負いません。たまたますべてのオンライン インストールを行っている場合は、マシン ID を処理するためのサーバー ユーティリティを提供することで、私たちが支援するかもしれません。

0 投票する
6 に答える
216 参照

mysql - MySQL - 主キーではなく、レコードごとに一意のキーを考え出す

わかりました、これは説明するのが難しいものです。

PAGES を持つアプリを作成しています。現在、レコードを SEL するためのキーとして PageID を使用しています。

私が今抱えている問題は、ユーザーがページを編集できるようにしたいが、前のページを失わないようにしたいということです (履歴のために、変更ログや wiki ページの履歴などの保持の理由を記録します)。

これにより、pageID として機能する PAGE テーブルに新しいフィールドが必要であると思われますが、行が追加されるたびに自動インクリメントされる主キーではありません。

Google ドキュメントには DOCID があります: /Doc?docid=0Af_mFtumB56WZGM4d3Y3d2JfMTNjcDlkemRjeg

そうすれば、同じ Doc ID を持つ複数のレコードを保持し、dataAdded フィールドに基づいて履歴変更ログを表示できます。ユーザーがその DOCID を表示したい場合は、最新のものを取得するだけです。

考え?私を正しい方向に向けてくれたあなたの賢明な考えに感謝します!