問題タブ [auto-increment]
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.
sqlite - Webkit の HTML5 データベース ストレージから挿入 ID を取得する
Webkit (少なくとも iPhone と Safari では) は、SQLite 経由で HTML5 のデータベース ストレージをサポートします。
次のトランザクションの挿入 ID (データベースに自動インクリメント フィールド 'id' があります) を取得する最善の方法を見つけようとしています。
sql-server-2005 - SQL Server 2005 で「autonumber」フィールドを実装するにはどうすればよいですか?
IDENTITY フィールドは知っていますが、問題を解決するために使用できないと感じています。
複数のクライアントがいるとしましょう。各クライアントには複数の注文があります。各クライアントは、注文に固有の順番に番号を付ける必要があります。
テーブル構造の例:
このテーブルの行の例は次のとおりです。
クライアントのMAX ClientOrderIDを取得し、その値をINSERTに使用するのが単純な方法であることはわかっていますが、これは同時実行の問題の影響を受ける可能性があります。トランザクションを使用することを検討していましたが、これに使用できる最も広い分離範囲がよくわかりません。LINQ to SQL を使用しますが、それは関係ないと感じています。
sql - SQL サーバー ID 列の値が 1 ではなく 0 から始まる
TABLE CREATE に IDENTITY(1,1) があるにもかかわらず、データベース内のいくつかのテーブルの ID が 0 から始まるという奇妙な状況があります。これは一部のテーブルには当てはまりますが、他のテーブルには当てはまりません。それは今日まで働いています。
ID列をリセットしようとしました:
しかし、新しいレコードは 0 から始まります。すべてのテーブルでこれを試してみましたが、まだ 0 から始まるものと 1 から始まるものがあります。
ポインタはありますか?
(高度なサービスを備えた SQL Server Express 2005 を使用しています)
mysql - MySQL のスコープ付き/複合代理キー
これは私の現在のデータベースの抜粋です(理解しやすいようにテーブル名を変更しました):
は常にid
で作成された代理キーauto_increment
です。
Pet.id
代理キーを「スコープ」にするPet.ownerFK
か、つまり、複合キー[ownerFk, id]
を最小キーとして使用したいと考えています。テーブルを次のように動作させたい:
私は現在MyISAM のこの機能を使用しており、「複数列インデックスのセカンダリ列で指定できますAUTO_INCREMENT
。この場合、AUTO_INCREMENT
列の生成値は として計算されMAX(auto_increment_column) + 1 WHERE prefix=given-prefix
ます。これは、データを順序付けられたグループに入れたい場合に役立ちます。 ."
ただし、いくつかの場所でトランザクションが必要なため、さまざまな (そしておそらく明白な) 理由により、MyISAM から InnoDB に切り替えたいと考えています。
InnoDBでこの効果を達成する方法はありますか?
この問題に関するいくつかの投稿を見つけました。それらの多くは、挿入前にテーブルを書き込みロックすることを提案しました。私はこれにあまり慣れていませんが、テーブルの書き込みロックではなく、これを少しオーバーホールするのではないでしょうか? Owner.current_pet_counter
ヘルパーフィールドとしてa を持つことが可能であれば、書き込み安全なトランザクション (これまで行ったことがない) を持つことをむしろ考えました。
したがって、別の許容される解決策は...
実際には、「スコープ」ID を実際のキーの一部にする必要はありません。私の実際のデータベース設計では、この「機能」を使用する別の「パーマリンク」テーブルを使用しています。現在、不足しているトランザクションの回避策として使用しています。次の代替案を考えました。
私はまだ MySQL でトランザクション/トランザクション変数を扱っていないので、これに重大な問題があるかどうかはわかりません。
注:id
一度ペットに与えた sを再利用したくありません。それが私が使用しない理由ですMAX()
。このソリューションには注意事項がありますか?
sql - DBの現在のレコードに基づいて文字列フィールドを自動的にインクリメントするCSVまたはXLSからSQLにデータをインポートするにはどうすればよいですか?
ExcelからSQL2000データベースにデータをインポートする必要があります。
ワークシートから6つのフィールドをインポートし、先行ゼロを含む5文字に埋め込まれた整数を含む文字列フィールドをインクリメントする必要があります。このフィールドは主キーではなく、dbはこれを自動的に入力しません。また、DBは、これが役立つ場合はこのフィールドをNULLとして入力し、これが役立つ場合は後で変更することを許可します。
ルーキーDTSと挿入ステートメントの組み合わせを使用して必要なテーブルにデータを取得し、今日実行する必要がある20レコードの文字列フィールドを手動で更新できますが、来週は約1000レコードをインポートする必要があります。
これを行うためにC#/ ADO.netアプリを作成する必要がありますか、[私は初心者なので、数日かかることを念頭に置いてください:-)]または、DTSを使用して文字列フィールドをインクリメントする方法はありますか直接または挿入ステートメントのある種のループ?
よろしくお願いしますG
編集:挿入しているテーブルは次のように構成されており、「cedeviceid」、「vanwarehouse」、「username」、「devicesimnumber」、「UserGroup」、「ServiceMgr」を更新する必要があります。Excelシートから。「sendercode」はインクリメントする必要のある文字列です
CREATE TABLE [dbo]。[mw_gsmprofile](
[cedeviceid] varchar NOT NULL、
[mainwarehouse] varchar NULL、
[vanwarehouse] varchar NULL、
[username] varchar NULL、
[sendercode] varchar NULL、
[devicesimnumber] varchar NULL、
[usersupportgsm] [int] NULL、
[userisonline] [int] NULL、
[onlinedate] varchar NULL、
[lastsentsequenceno] [int] NULL、
[lastsentdate] varchar NULL、
[lastreceivedsequenceno] [int] NULL、
[lastreceiveddate] varchar NULL、
[EnableAutoDownloading] [int] NULL、
[EnableCompressFile] [int] NULL、
[LogonUserName] varchar NULL、
[LogonPassword] varchar NULL、
[LogonDomain] varchar NULL、
[UserGroup] varchar NULL、
[UseStorageCard] [int] NULL、
[SMSMapProfile] varchar NULL、
[SMPPClientFlag] [int] NULL、
[LASTUPDATE] varchar NULL、
[ServiceMgr] varchar NULL、
[VanLocation] varchar NULL、
[OnHireWarehouse] varchar NULL、
[OnHireWhsRepType] [int] NULL、
[HireDepotWarehouse] varchar NULL、
[HireDepotWhsRepType] [int] NULL、
CONSTRAINT [PK_mw_gsmprofile] PRIMARY KEY CLUSTERED
(
[cedeviceid] ASC
)WITH(PAD_INDEX = OFF = OFF、IGNORE_DUP_KEY = OFF、ALLOW_ROW_LOCKS = ON、ALLOW_PAGE_LOCKS = ON)ON [PRIMARY]
)ON [PRIMARY]
サンプルデータ
cedeviceid、vanwarehouse、username、devicesimnumber、UserGroup、ServiceMgr 3431、999
、INSTALL TEAM 1、、INSTAL、AHOA 3441、999
、INSTALL TEAM 2、、INSTAL、AHOA 3451、999
、INSTALL TEAM 3、、INSTAL、AHOA
3461、999 、INSTALL TEAM 4、、INSTAL、AHOA 3471、999
、INSTALL TEAM 5、、INSTAL、AHOA 3472、999
、INSTALL TEAM 6、、INSTAL、AHOA
ms-access - Access のオートナンバー (インクリメント) はインクリメントが保証されていますか?
特定のテーブルについて、ID フィールドを AutoNumber (Increment) に設定しています。このテーブルに 5 行を立て続けに追加すると、それぞれの行の ID が最後の行よりも大きくなることが保証されますか? たとえば、以前の値が削除された場合、自動番号付けは 1 から再開されますか?
mysql - 現在の auto_increment 値を同じ INSERT クエリの別のフィールドの基準として使用します - これは MySQL で可能ですか?
私のテーブル(MySQL)には、次のフィールドがあります。
id
- プライマリ、auto_increment
hash
- base 36 表現id
ストアド プロシージャを使用して、ID が INSERT で受け取る値に相当する base 36 を計算して、両方のフィールドを一度に入力したいと思います。このようなもの:
明らかにこれは機能しませんが、私が達成しようとしていることを示していることを願っています. これは可能ですか?
注: クエリを 1 つだけ使用したいので、last_insert_id は役に立ちません (少なくとも私が理解している限り)。
postgresql - PostgreSQL 自動インクリメント
MySQL から PostgreSQL に切り替えており、値の自動インクリメントを行う方法を知りたいと思っていました。PostgreSQL のドキュメントでデータ型 "serial" を見ましたが、それを使用すると構文エラーが発生します (v8.0)。
sql - SQL Server: ストアド プロシージャ内で自動インクリメントされた ID を取得しますか?
私のデータベースには、自動インクリメントの主キー ID 'ID' と通常の 'TIMESTAMP 列' を持つ親テーブルがあります。親の「ID」列を参照する外部キーを持つ子テーブルがあります。
親データベースと子データベースの両方に新しい列を挿入するストアド プロシージャを作成したいと考えています。子の 'ID' 列を新しい自動インクリメントされた親の 'ID' 列と等しくなるように設定するにはどうすればよいですか? これには別のものが必要ですか:
それとも別の方法がありますか?