問題タブ [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.
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 を検索する必要がある場合は、ルックアップがさらに複雑になります。
これについて何か助けてくれてありがとう。
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 が必要です。
編集:
問題のテーブルの構造は次のとおりです
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.
tsql - 2つの整数の複合キーから一意の整数キーを作成する簡単な方法はありますか?
質問にあまり関係のないさまざまな理由で、2つの整数で構成された複合キーを含むテーブルがあり、これら2つの数値から単一の一意キーを作成したいと思います。私の最初の考えはそれらを連結することでしたが、(51,1)の複合キーが(5,11)と同じ一意のキー、つまり511になることに気付いたとき、すぐに問題に遭遇しました。
生成された整数が開始整数のペアに一意になるように、2つの整数から整数を生成する賢い方法はありますか?
編集:印象的な量の数学に直面した後、私が含めるべき詳細の1つは、問題のキーのサイズであることに気付きました。元のペアでは、最初のキーは現在6桁であり、システムの存続期間中はおそらく7桁のままになります。2番目のキーはまだ20を超えていません。これらの制約を考えると、問題はそれほど困難ではないように見えます。
sql - ビューが呼び出されるたびに同じままになる一意のIDをSQLServerビューに作成することは可能ですか?
ビューを作成するために結合しているテーブルが10個あります。各テーブルからIDを選択するだけですが、ビューでは、各IDを複数回表示できますが、すべてのIDの組み合わせは常に一意になります。このビューに一意のIDになる別の列を作成する方法はありますか?
一意のIDを保存し、それを使用してビューに対してクエリを実行し、他のすべてのIDを取得できるようにしたいと思います。
php - ランダムでユニークな英数字の文字列を生成するには?
検証リンクで使用するために、数字と文字を使用してランダムで一意の文字列を生成するにはどうすればよいでしょうか? たとえば、Web サイトでアカウントを作成すると、リンクが記載されたメールが送信され、アカウントを確認するにはそのリンクをクリックする必要があります。
PHPを使用してそれらの1つを生成するにはどうすればよいですか?
sql-server - SQL Server 2005で空白のuniqueidentifierを識別するにはどうすればよいですか?
uniqueidentifier
このようなストアドプロシージャを使用しています
00000000-0000-0000-0000-000000000000
。
これは単純なことのように思えますが、これが空白であることをどのように識別できますuniqueidentifier
か?
このような値を取得した場合、DDB72E0C-FC43-4C34-A924-741445153021
Xを実行したい
このような値を取得した場合、00000000-0000-0000-0000-000000000000
Yを実行します
ゼロを数えるよりもエレガントな方法はありますか?
前もって感謝します
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 を処理するためのサーバー ユーティリティを提供することで、私たちが支援するかもしれません。
mysql - MySQL - 主キーではなく、レコードごとに一意のキーを考え出す
わかりました、これは説明するのが難しいものです。
PAGES を持つアプリを作成しています。現在、レコードを SEL するためのキーとして PageID を使用しています。
私が今抱えている問題は、ユーザーがページを編集できるようにしたいが、前のページを失わないようにしたいということです (履歴のために、変更ログや wiki ページの履歴などの保持の理由を記録します)。
これにより、pageID として機能する PAGE テーブルに新しいフィールドが必要であると思われますが、行が追加されるたびに自動インクリメントされる主キーではありません。
Google ドキュメントには DOCID があります: /Doc?docid=0Af_mFtumB56WZGM4d3Y3d2JfMTNjcDlkemRjeg
そうすれば、同じ Doc ID を持つ複数のレコードを保持し、dataAdded フィールドに基づいて履歴変更ログを表示できます。ユーザーがその DOCID を表示したい場合は、最新のものを取得するだけです。
考え?私を正しい方向に向けてくれたあなたの賢明な考えに感謝します!