問題タブ [identity-column]
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.
alter-table - Teradata: ID 列を既存のテーブルに追加するにはどうすればよいですか?
次の SQL を使用して、ID 列を既存のテーブルに追加する必要があります。
ID 列を含む新しいテーブルを問題なく作成できますが、上記のスクリプトを実行すると次のエラーが発生します。
ALTER TABLE Failed. 3706: Syntaxt error: Cannot add new Identity Column option
Teradata データベースはオンライン サポートが非常に不足しており、基本的に ID 列を含むテーブルのコピーを作成し、古いテーブルから新しいテーブルに一括挿入を行い、すべての参照を新しいテーブル。これがこれを行う唯一の可能な方法であるとは信じがたいです。
ここでのオプションは何ですか?
sql-server - オーバーフローの危険がある IDENTITY 列を簡単に見つけるにはどうすればよいですか?
私のデータベースは古くなり、最大のINT IDENTITY
列の 1 つは約 13 億の値を持っています。これで21億くらいオーバーフローします。サイズを大きくすることを計画していますが、データベース内のレコード数が多いため、あまり早くしたくありません。列のサイズを大きくする前に、データベース ハードウェアを交換すると、パフォーマンスの問題が相殺される可能性があります。また、50% を超えて使用されているデータベース内の他のすべての列にも注目したいと考えています。テーブルがたくさんあり、それぞれを手動でチェックするのは現実的ではありません。
これは私が現在値を取得する方法です (返される値が少し古くなっている可能性があることはわかっていますが、私の目的には十分です):
を使用しINFORMATION_SCHEMA
てこの情報を取得できますか?
sql-server-ce - SQL Server CE の ID としての Uniqueidentifier?
SQL Server CE で、データ型の ID 列を作成できますuniqueidentifier
か? もしそうなら、どのように?そうでない場合、なぜですか?
VS2010のサーバーエクスプローラーから「新しいテーブル」で作成しようとしましたが、タイプがintの場合にのみIdentityオプションが有効になります。
編集:
EricEJ の提案に従って、列を PK にしました。また、「RowGuid」に設定しました
プロパティの意図した目的は正確にはわかりませんがRowGuid
、目的の効果があるようです。つまり、コードで作成することなく、挿入時に新しいデフォルトの guid 値を自動的に作成します。デフォルト値をシーケンシャル GUID にするとよいのですが、これは SQL Server CE ではサポートされていないようです。
sql - データベースのコピーの作成 - 「ID」指定の使用が原因で失敗する
データベースを再作成するスクリプトを生成するときに、「ID」列を適切に処理する方法を見つけようとしています。
このためにスクリプトを生成する必要がある本来の理由は、SQL データベースを古いバージョンに「ダウングレード」する必要があるためです。データベース (v10.5) のすべてが古いバージョン (v10.0) と互換性があることはわかっています。私が直面している問題は、データベースをコピーする 3 つの異なる方法のうち、元の ID フィールド (ID) を維持できないという事実で常に失敗することです。
私のすべてのテーブルには、最初の列がありますID: Int = PK & Identity
。また、テーブルがこの列で完全に連続していない場合も多くあります。たとえば、1、2、3、5、8、12、13 などです。これは単に、これらのレコードが過去に削除されたためです。しかし、元のID番号を以前と同じ順序で再挿入することは不可能のようです...
では、サーバー A からサーバー B にデータベース全体を (バックアップ/復元なしで) コピーするにはどうすればよいでしょうか? 注: Management Studio から両方のサーバーの両方のデータベースに接続できます。また、宛先サーバーは私のものではなく、共有ホスト DB であり、自分のデータベースにしかアクセスできません。宛先サーバーの設定を変更する権限がありません。
私は次のことを試しました:
- データベース全体のスクリプトを生成するオプション
- データベースのエクスポート オプション
- データベースのバックアップ/復元 - バージョンの不一致による失敗
すべてのテーブルで ID 仕様を一時的に「無効」にし、データを挿入してから、ID を再度オンにする必要があると思います。しかし、データベース構造を操作するためのスクリプトを書くのは恐ろしいことです。データそれ自体、私はできます。しかし、データベース構造を操作するためにツールを使用することに慣れてしまったので、スクリプトを操作するのに時間をかけたことさえありませんでした。
sql - ID リセットの問題
重複の可能性:
SQL サーバー ID 列の値が 1 ではなく 0 から始まる
挿入された ID 値は「0」から始まります
ここでは、データベースを作成してテーブルを作成します。次に、空のテーブルのレコードを削除して、ID をリセットしてみます。レコードを挿入すると、ID 値「0」から開始されます。
誰でもこれを解決するのを手伝ってくれませんか。
nhibernate - Fluent AutoMap で ID 列を一時的にオフにしますか?
私は C# で Fluent NHibernate のテストを開始しました。20 の関連クラスを持つ適切に正規化されたオブジェクト構造があります。現在、NHibernate 3.2 で Fluent 1.3 を使用しています。これまでのところ、私は自分に合った AutoMap 機能を使用することができました。非常に便利です!
しかし... 3つのテーブルは「列挙テーブル」であり、特定のID値でレコードを設定する必要があります。これらのテーブルを手動でマッピングして、残りを自動マッピングしようとしました。しかし、手動テーブルが作成されると、自動マップされたテーブルを参照するため失敗します (手動マッパーでは使用できませんか?)。
AutoMapping を使用することは可能ですが、一部のクラスでは主キーで ID の作成をオーバーライドしますか? カスタム規約を作成しようとしましたが、成功しませんでした。
他の方法はありますか?すべてのクラスで手動マッピングを使用することを余儀なくされるのは悲しいことです....
asp.net - ASP.Net から IDENTITY_INSERT をオフに設定する
あるデータベースから別のデータベースにデータをインポートするための Web ベースのインポーターを作成しています。ID を持つテーブルにデータが読み込まれるため、insert ステートメントを実行する前に Identity_Inserts を有効にする必要があります。リストに実行する必要がある SQL ステートメントを生成します。やりたいことは、コマンドをループする前に IDENTITY_INSERT を ON に設定し、完了したら元に戻すように設定することです。どのコマンドが失敗したかを追跡したいので、各コマンドを 1 つずつ実行します。
ループを開始する前に SET IDENTITY_INSERT [TABLE NAME] ON を実行しようとしましたが、これは機能しません。
私がやろうとしていることをどのように達成できますか、または他のアイデアを持っている人はいますか?
c# - ID 列を使用した単体テスト
IDENTITY
SQL Server テーブルで列を使用しています。
特定の ID を持つデータ レコードを削除する単体テストがあります。
テストデータを挿入すると、次の例外が発生します。
IDENTITY_INSERT が OFF に設定されている場合、テーブル 'MyTablename' の ID 列に明示的な値を挿入できません
次に、管理スタジオで簡単なテストを行います。
それは言うCommand(s) completed successfully.
単体テストを再実行しますが、それでも同じエラーが発生します。
一般的にはどうすればいいですか?すべてのテーブルを含む単体テスト データベースで、ID 列に手動で値を挿入できるようにしたいと考えています。
sql-server-express - ALTER TABLE クエリを実行して自動インクリメントで PK を追加しようとすると、SQL Server Management Studio Express がクラッシュする
既存の列 (type ) を PK として使用する既存のテーブルがあり、INT
行が挿入されるたびにその値を手動でインクリメントします。自動インクリメントで IDENTITY に変更したかったのです。ここでスレッドを見つけました (http://stackoverflow.com/questions/4862385/sql-server-add-auto-increment-primary-key-to-existing-table) は、まさに私が望むものを達成しているようです。しかし、ALTER ステートメントを実行するたびに、Mgmt Studio がクラッシュします。
また、このスレッド (http://stackoverflow.com/questions/3876785/sql-server-cant-insert-null) のように、列のプロパティを手動で変更して (ID 仕様/Is Identity:yes)、上記の目標を達成しようとしました。 -into-primary-key-field)。しかし、プロパティを変更した後にテーブルを閉じるたびに、エラーが発生します
'Pix' テーブル テーブル
を変更できません。
値 NULL を列 'picID'、テーブル 'photo.dbo.Tmp_Pix' に挿入できません。列はヌルを許可しません。INSERT は失敗します。
ステートメントは終了されました。
何が起こっているのかわからない。
mysql - 列 ID が 1 つだけのエンティティ フレームワーク テーブルに挿入
EF と ID 列が 1 つしかないテーブルに問題があります。テーブルはFileData
IDid_file_data
列 (mysql データベース) であり、作成用の次のコードがあります。
しかしcontext.SaveChanges()
、null参照例外があります。このエンティティを挿入するにはどうすればよいですか?
ありがとう!