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. PuTTYで自動ログインして1つのコマンドを実行するバッチファイル
- 3. bashの.aliasesファイルでコマンドを1つずつ実行します。
- 4. SQLは1つのサブミットから複数の行をforeachに挿入します
- 5. SQL Server:1つの行に複数の選択結果を挿入します。
- 6. Vertica SQLは1つのステートメントに複数の行を挿入します
- 7. Rの1行で2つのコマンドを連続して実行しますか?
- 8. 挿入後SQL Server挿入行すべての行をコピーしません
- 9. SQLiteは、実際の値を挿入している間に1行にnullを挿入します
- 10. oracleは、1つの挿入クエリを使用して複数の表に複数の行を挿入します。
- 11. テーブルAを更新し、1つのSQLコマンドでテーブルBに挿入しますか?
- 12. Groovyの1つのSQL文に複数の行を挿入
- 13. 複数のターミナルコマンドを1つのファイルに入れて、すべてのコマンドを一度に実行しますか?
- 14. SQLを使用してテーブルに行を挿入します
- 15. C#コンボボックスのデータをsqlコマンドで挿入します
- 16. javaのSQLの挿入コマンド
- 17. SQL挿入コマンドのエラー
- 18. Oracle PL/SQLプロシージャは挿入を実行しません。
- 19. SQL Server:動的クエリを挿入して挿入すると、1のときに値が挿入されます
- 20. 現在ログインしているユーザーとしてpowershellコマンドを実行します。
- 21. 1つのコマンドを実行し、複数のRubyファイルを実行する
- 22. 1つのサーバーの1つのテーブルにスクリプトデータを挿入し、別のサーバーの同じテーブルに挿入します
- 23. ロード、更新、保存、またはSQLコマンドの挿入/更新を直接実行しますか?
- 24. ケースステートメントを使用して1つの挿入物にSQL文を結合する
- 25. 2つのデータベーステーブルの行を比較して挿入します
- 26. NHibernateの1つのプロパティに対してカスタムsqlを実行します。
- 27. SQLの複数の列に1つの値を挿入します
- 28. SQLデータアダプタを使用してSQLテーブル行にNULL値を挿入します。
- 29. 1行に2つ以上のコマンドを常に実行しますが、1つ目の終了ステータスを返す
- 30. アポストロフィ文字を使用してSQL Serverにsqlコマンドを挿入する方法
これは私に正しい経路を教えてくれたので受け入れてくれました。ありがとう。 – osp70