MS SQL Serverデータベースの行を更新し、ストアドプロシージャを使用して更新を履歴テーブルに挿入するコードを実装するように求められました。データベースを制御しないので、ストアドプロシージャを追加することはできません。ストアドプロシージャでは、更新を行い、別のストアドプロシージャでexecuteを呼び出すことができます。 1つのSQLコマンドを使用してコード内でこれを行うように設定することはできますか?挿入を実行して1つのSQLコマンドをログインします
答えて
セカンダリが失敗した場合に最初のステートメントをロールバックできるように、同じステートメント(セミコロンで別々のコマンドを区切る)またはトランザクションを使用して両方を実行します。
ライブラリによっては、通常、両方のクエリをセミコロンで区切って1つのコマンド文字列に入れることができます。
感謝を作成することはできません、それは私がセミコロンをしようとvb.net 2005を使用したMS SQLです。 – osp70
不十分な情報 - どのようなSQLサーバーですか?なぜ履歴テーブルがありますか?
トリガーはこのようなことを行います。 MySQLのバイナリログはあなたにとってもっと便利かもしれません。
あなたはデータベースを制御していないと言います。あなたはそれにアクセスするコードを制御しますか?そこにログを追加し、それをSQLサーバーから完全に削除してください。
履歴テーブルは、アプリケーションがアイテムの更新を表示するために使用します。回復のためのトランザクションログだけではありません。 – osp70
これには実際にはストアドプロシージャは必要ありません。問題は本当にあなたがすべての挿入物をコントロールできるかどうかまでにまでわかります。実際にすべての挿入物にアクセスできる場合は、挿入物をデータテーブルにラップし、ヒストリカルテーブルに挿入するだけで単一の転置を行うことができます。これにより、両方が成功して「成功」することが保証されます。ただし、トランザクション内で順番にテーブルにアクセスするときは、履歴テーブルとデータテーブルをロックしないようにする必要があります。そうしないとデッドロック状態になる可能性があります。
ただし、挿入を制御できない場合は、変更、挿入、または削除されたデータにアクセスする特定のデータベースシステムにトリガーを追加できます。挿入、更新、削除を行った人のように、必要なデータをすべて提供しても提供しなくてもかまいませんが、変更された内容が表示されます。
お返事いただきありがとうございます。以下は、私がやったことの概要です。今、トランスが失敗した場合に実際にロールバックするかどうかを調べるテスト。
sSQL = "BEGIN TRANSACTION;" & _
" Update table set col1 = @col1, col2 = @col2" & _
" where col3 = @col3 and " & _
" EXECUTE addcontacthistoryentry @parm1, @parm2, @parm3, @parm4, @parm5, @parm6; " & _
"COMMIT TRANSACTION;"
私のテスト環境では、格納されたprocを削除しました.SQLがエラーを投げたとき、情報は開始と同じであったため、更新はロールバックされているに違いありません。みんな、ありがとう! – osp70
- 1. 行を挿入しようとしましたが、SQLの挿入のみ1
- 2. Rの1行で2つのコマンドを連続して実行しますか?
- 3. 挿入後SQL Server挿入行すべての行をコピーしません
- 4. oracleは、1つの挿入クエリを使用して複数の表に複数の行を挿入します。
- 5. テーブルAを更新し、1つのSQLコマンドでテーブルBに挿入しますか?
- 6. Groovyの1つのSQL文に複数の行を挿入
- 7. 1つのサーバーの1つのテーブルにスクリプトデータを挿入し、別のサーバーの同じテーブルに挿入します
- 8. 1つのコマンドを実行し、複数のRubyファイルを実行する
- 9. 2つのデータベーステーブルの行を比較して挿入します
- 10. NHibernateの1つのプロパティに対してカスタムsqlを実行します。
- 11. SQL:1つのステートメントに複数の値セットを挿入しますか?
- 12. アンドロイドデバイスにログインしてコマンドを実行する方法
- 13. Sqlは「挿入ブロック」メソッドとして挿入します
- 14. Linqは1行に多くの行を挿入しますSubmitChanges()
- 15. LINQ to SQL 1:1挿入
- 16. sshログイン後にコマンドを実行します
- 17. T-SQLの1つのパラメータを使用して複数の値を複数の行に挿入する
- 18. ブロブファイルをアップロードして解析し、sql azureの行を挿入します
- 19. os.system()コマンドを実行して、Linuxシェルを実行しますか?
- 20. Ms複数の行を挿入した後に1行挿入するプロシージャを作成します。
- 21. データを動的に複数の行に1つのボタンをクリックして挿入
- 22. 1つの挿入コマンドで複数のレコードをテーブルに挿入する構文はありますか?
- 23. SSIS SQL実行タスクのSQLコマンドを発行し
- 24. Bash配管:1行目以降の入力を分割し、1行目と別のコマンドを実行する
- 25. PowershellはSQLジョブを実行し、遅延して次のコマンドを実行します。
- 26. SQL Serverは複数のコマンドを同時に実行します
- 27. コマンドラインでコマンドを実行して実行するまで待つ方法
- 28. 私は1つのレコードを挿入するときに、一度に2つのレコードを挿入します。ヘルプ
- 29. 1つのSQL文を使用してテンポラリテーブルからデータを挿入してプルする方法
- 30. .sqlを実行するantスクリプトでログインします。
これは私に正しい経路を教えてくれたので受け入れてくれました。ありがとう。 – osp70