多くのPCから1つのテーブルにデータを保存したいのですが、しかし、データには手作業で入力したインデックス(ID)と以前のデータ(ID)からの注文があるので、まずデータベースでチェックしてからインクリメントします。問題は複数のPC /デバイスが一緒にセーブすると、結果。この問題を解決するには?多くのPCのデータを1つのテーブルに保存する方法SQL
これは、使用された最後のID検索のためのクエリです:
> public DataRow GetPlayerIDByClient(object clientPK)
> {
> DataRow result = null;
>
> if (clientPK != null)
> {
> IDbDataParameter clientFKParam = this.CreateParameter(csPlayerNamesEntity.Names.ClientFK, clientPK);
>
> string selectCommand = string.Format("SELECT TOP 1 * FROM {0} WHERE {1} = {3} AND " +
> "({2} LIKE 'G%' or {2} LIKE 'g%') ORDER BY {4} DESC",
> csPlayerNamesEntity.Names.TableName, //0
> csPlayerNamesEntity.Names.ClientFK, //1
> csPlayerNamesEntity.Names.ID,//2
> clientFKParam,//3
> csPlayerNamesEntity.Names.PK); //4
>
> DataTable dt = this.ExecReaderDataTable(selectCommand, clientFKParam);
>
> if (dt != null && dt.Rows.Count > 0)
> {
> result = dt.Rows[0];
> }
> }
>
> return result;
> }
Entity Frameworkについて聞きましたか? ASP.NET MVCアプリケーションでデータベースを扱う際の作業がはるかに簡単になります。 – Robert
これは設計上の問題です。複数の可能な解決策があります。中央のインスタンスからクライアントを同期させることができます。または、データをインポート・テーブルに書き込んで、データベース上のジョブがインポートしたデータを本番表に転送させるようにしてください。 –
SQL Serverは、この問題の解決方法を提供します。たとえば、ID列に対してID列(自動インクリメント)を使用することも、シーケンスを使用して次のIDを取得することもできます。 Google for SQL Serverのシーケンス –