問題タブ [insert-update]
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.
sql - SQL-テーブルデザイン-DateCreated列とDateUpdated列
私のアプリケーションには、User、Customer、Postなどのいくつかのエンティティクラスがあります
データベースを設計しようとしています。エンティティが作成および更新された日付を保存したいと思います。これはそれがトリッキーになるところです。確かに1つのオプションは、エンティティテーブルごとにcreated_timestamp列とupdate_timestamp列を追加することですが、それは冗長ではありませんか?
もう1つの可能性は、この情報を格納するログテーブルを作成することであり、任意のエンティティの更新を追跡するためのログテーブルを含めることができます。
何かご意見は?私は後者の実装に傾いています。
sql - ストアド プロシージャを使用しない SQL Server 2005 での挿入/更新
データベース内の既存の行を更新するか、存在しない場合は挿入する必要がある、従来の挿入/更新シナリオを実行しようとしています。
件名に関する以前の質問を見つけましたが、それは私が使用していないストアド プロシージャを扱っています。もっと良い方法がない限り、単純な SQL SELECT、INSERT、および UPDATE ステートメントを使用したいと思います (MERGE ステートメントは SQL Server 2005 では使用できません)。
私の一般的な考えはこれだと思います:
行の存在をチェックすることに関して、UPDATE または INSERT を呼び出す前に SELECT ステートメントを実行するのはどれくらいコストがかかりますか? それとも、UPDATE を試して、影響を受ける行の数を確認し、影響を受ける行が 0 の場合は INSERT を実行する方がよいでしょうか?
php - Zend Framework 1.5 で "INSERT...ON DUPLICATE KEY UPDATE" を実行する方法はありますか?
ON DUPLICATE KEY UPDATE
Zend Framework 1.5 で使用したいのですが、可能ですか?
例
nhibernate - NHibernate を使用してレコードを挿入または更新 (または上書き) するにはどうすればよいですか?
すでに存在するかどうかに関係なく、データベースに行を書き込む必要があります。NHibernate を使用する前は、これはストアド プロシージャで行われていました。プロシージャは更新を試行し、行が変更されていない場合は挿入にフォールバックします。アプリケーションはレコードが存在するかどうかを気にしないため、これはうまく機能しました。
私が見つけた NHibernate のソリューションでは、エンティティをロードして変更するか、エンティティを削除して新しいエンティティを挿入できるようにする必要があります。アプリケーションは、レコードが既に存在するかどうかを気にする必要があります。それを回避する方法はありますか?
IDは重要ですか?
割り当てられた ID
オブジェクトには割り当てられた ID としてキーワードがあり、テーブルの主キーです。
SaveOrUpdate() は Id に基づいて Save() または Update() メソッドを適切に呼び出すことを理解しています。割り当てられた ID を使用すると、ID が保存されていない値ではないため、これは機能しません。ただし、代わりに Version または Timestamp フィールドをインジケータとして使用できます。実際には、メモリ内のオブジェクトがデータベース内のレコードに関連付けられているかどうかのみが反映されるため、これは関係ありません。レコードがデータベースに存在するかどうかは示しません。
生成された ID
割り当てられた ID が本当に問題の原因である場合は、キーワードの代わりに生成された ID を主キーとして使用できます。これにより、事実上常に挿入されるため、NHibernate の挿入/更新の問題が回避されます。ただし、キーワードの重複を防ぐ必要があります。キーワード列に一意のインデックスを使用すると、主キーが異なっていても、重複するキーワードに対して例外がスローされます。
別のアプローチ?
おそらく問題は実際には NHibernate にあるのではなく、これがモデル化されている方法にあります。アプリケーションの他の領域とは異なり、これはオブジェクト中心ではなくデータ中心です。NHibernate によって読み書きが簡単になり、ストアド プロシージャが不要になるのは素晴らしいことです。しかし、既存の値に関係なく単純に記述したいという欲求は、オブジェクトのアイデンティティ モデルのモデルにうまく適合しません。これにアプローチするより良い方法はありますか?
sql - DB2 には「挿入または更新」ステートメントがありますか?
私のコード (Java) から、コードの実行後にデータベース (DB2) に行が存在することを確認したいと考えています。
私のコードは現在、を実行し、select
結果が返されない場合は を実行しinsert
ます。マルチスレッド環境で実行すると同時実行性の問題が発生するため、このコードはあまり好きではありません。
私がやりたいことは、このロジックを Java コードではなく DB2 に入れることです。DB2 にはinsert-or-update
ステートメントがありますか? または、私が使用できるようなものはありますか?
例えば:
それを行う別の方法は、おそらく常に挿入を実行して「SQLコード-803主キーが既に存在します」をキャッチすることですが、可能であればそれを避けたいと思います。
sql - SQLServer2005のINSERTおよびUPDATEでfloatとして定義された列を丸める方法
私は、floatデータ型を使用して、小数点以下2桁(ドルとセント)のみである必要がある値を格納するデータベースに取り組んでいます。
float列を更新する人がROUNDを実行する限り、floatの使用は問題なく機能しているように見えます。もちろん、これは常に発生するとは限りません。SUMが実行されると、表示は小数点以下2桁のみを表示するようにフォーマットされているため、表示されているものから常に数ペニーずれています。このデータベースには、floatを使用する数百のテーブルがあり、float列を自動的に丸めることができると便利です。
これはできますか?
INSERTおよびUPDATEでTRIGGERを使用して、列でROUNDを実行できますか?
可能であれば、TRIGGERをどのようにコーディングするかを示し、それをお勧めしますか?
他のアイデアはありますか?
SQLServer2005を使用しています。
これは、 「フロートまたはデシマルを会計アプリケーションのドル額に使用しますか?」という質問をする投稿です。、そして私は言った1つの応答が好きです
「ある種の固定小数点/任意精度の数値パッケージ(Java BigNum、Python 10進モジュールなど)の使用を実際に検討する必要があります。そうしないと、傷ついた世界に陥ることになります。」
linq-to-sql - Linq2Sql で Tabled Mapped を更新できません
DBDataContext でテーブル X を更新できないので、これが私のスニペットです。ちなみに、テーブルを 1 つだけ更新すると機能します。しかし、挿入してから更新すると、「オブジェクトを System.Int32 から System.String 型にキャストできません」という例外がスローされます。
update を実行すると、デバッガーからこのスタックを取得しています:
c# - OleDbDataAdapter のカスタム挿入/更新コマンドの記述
OleDbDataAdapter を使用して DataSet のテーブルを埋めています。問題は、select sql ステートメントが非常に複雑であり (左結合を使用して多数のテーブルからデータを取得する)、OleDbCommandBuilder が挿入/更新ステートメントを記述できないことです。
ここで最善の行動方針は何だろうと思っていましたか?データが変更される可能性のある列はそれほど多くありません (30 のうち 6 ~ 8 程度しか必要ありません) が、OleDbDataAdapter.Update をできるだけ簡単に実行できることが重要です (速度とリソースの使用が非常に重要です)。
誰もこれを行った経験がありますか? ここでの最善の/推奨される行動方針は何ですか?
ご意見ありがとうございます。
編集:特に複数テーブルの更新が含まれる場合は、OleDbDataAdapter の更新ステートメントを作成する際にいくつかのヘルプを使用することもできます。誰かが私にいくつかの文献を教えてくれるなら、それは素晴らしいことです!