SQL Server データベースのデータを表示する DataGridView があります。ユーザーはデータを編集してデータベースに保存することができます。
データがデータベースに保存される方法は、次のようなものです。
Dim da As New SqlDataAdapter
Dim cmdBuilder As New SqlCommandBuilder(da)
da.SelectCommand = New SqlCommand(sql, conn)
da.InsertCommand = cmdBuilder.GetInsertCommand
da.UpdateCommand = cmdBuilder.GetUpdateCommand
Dim cb As SqlCommandBuilder = New SqlCommandBuilder(da)
da.Update(dt)
これは、通常のテーブルに保存するときにうまく機能します。ただし、挿入、更新、および削除時に起動する INSTEAD OF トリガーを持つビューにも保存したいと考えています。このビューで上記を使用しようとすると、エラーが発生します。
UpdateCommand の動的 SQL 生成は、キー列情報を返さない SelectCommand に対してはサポートされていません。
このビューに保存するにはどうすればよいですか? トリガーを起動したいので、基になるテーブルに直接保存したくありません。
ありがとう!
編集: InsertCommand と UpdateCommand を手動で生成しようとしましたが、同じエラーが発生しました。
EDIT 2:手動でコマンドを生成したときに、コマンドが間違っていることがわかりました。正常に機能することを修正したら、ビューが更新され、トリガーが期待どおりに起動します。SqlCommandBuilder を使用してビューのコマンドを自動生成することはできないと思います。