• ベストアンサー

SQLServerでビューを使用したデータ更新

SQLServer2012でのビューを使用したデータ変更(追加・変更・削除)は どこまで可能でしょうか? 1.ビューのデータ変更を行う場合複数テーブルのデータを   変更することは可能でしょうか? 2.上記の変更の際の条件や制限事項はありますでしょうか? 3.上記を回避する方法などありましたらご教授ください。 未熟者で的を得ていない質問となっているかと思いますが、 ご教授いただければ幸甚です。

質問者が選んだベストアンサー

  • ベストアンサー
  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.1

1、無理だと思います。 ビューは一つのテーブルに作成されたビューでのみ変更は可能です。 1つのテーブルの変更を他に反映させる場合はトリガーを使う方法が一般的です。両方同時の場合はストアドプロシージャを作成するべきです。

big_apple0013
質問者

お礼

返信が遅くなりまして失礼いたしました。 お忙しい中、ご回答いただきましてありがとうございました。 やはり複数テーブルに対しての更新はできないということですね。 確認できてよかったです。

関連するQ&A

  • view作成時にデータ型を変更したい(SQLServer2000)

    何度もお世話になっております。 SQLServer2000にて、現状で300近くあるテーブルデータにText型であるフィールドが複数存在ます。 今回行ないたいことは、これらテーブルのVIEWを作成 → 各テーブル内で"Text型"に定義されているフィールドを"VarChar(max)型"に変更してVIEWを作成したいのです。 この作業をあまり労力をかけずにできれば一括で処理できる方法等ありませんでしょうか?どうかよろしくお願いします。

  • SQLServerでViewの参照・・・

    SQLServer同士のサーバで、別のサーバーの特定のViewを参照する事ができますか? <例> Aサーバーで、BサーバーのViewを参照 Select * From [B].[aaa].dbo.v_xxxx 上記のようなことがしたいのです。 データの内容上、他のテーブル・ビューは参照させたくありません。 可能な場合、お手数ですがその方法もご教授頂けるととても助かります。 宜しくお願い致します。

  • SQLServerでビューを作成する時のデータ型

    いつもお世話になっています。 SQLServer2005で複数テーブルを結合したビューを作成したいのですが フィールドの中にデータを演算した結果をセットしたいと思っています。 ここまでは問題なくできたのですが 演算した結果のデータ型が元のデータ型に依存しているのか floatになっていました。 実際には有効数字の観点から、intが適切なので データ型を指定したいのですが、その方法がよくわかりません。 ビューを作成する時に、データ型を指定する方法を教えていただきたいと思います。 よろしくお願いします。

  • SQLServerのデータ管理について

    SQLServer7.0を使用しております。 あるテーブルで、3ヶ月以上前のレコードに関しては 自動的に削除したいと考えております。 そこでPGを作成し、バッチファイルとして処理をさせ 上記のような管理が出来ればと考えました。 しかし、そんなPGをわざわざ作らなくても SQLServer自体でなんとかならないのかなと。。。 そこで質問なのですが、SQLServer自体で このような管理が出来る機能、設定はないのでしょうか? 何かご存知の方がいらっしゃいましたらご教授願います。

  • SQLServer2000からSQLServer2005へのデータ移行

    SQLServer2000からSQLServer2005へのデータ移行方法 Microsoft SQL Server ManagementStadio Expressで SQLServer2000のバックアップファイルから、 ローカルの開発環境(SQL Server2005 Express)でデータベースを復元しようと試みましたところ、 復元が正常に出来ませんでした。 復元はエラーが発生せず完了しデータベースは作成されているのですが、 データベースを右クリックで削除やプロパティを見ることもできず、 どのようなテーブルが存在するのか中身の参照も追加も何もできない状態です。 http://qanda.rakuten.ne.jp/qa4183273.html 上記URLなどでSQL Server2000のバックアップから2005で復元しているような発言がされているので 可能だと思うのですが、何か特別な処理が必要なのでしょうか? ご存じのかた、教えていただけますようお願いいたします。

  • SQLServer2005でデータ領域を更新したい

    SQLserever2005を使用しております。 あるデータベースをHDに入れて計算してたところ 「データベース '---' のトランザクション ログがいっぱいです。」 とエラーが出てしまい、HDの容量を見てみたら9MBほどしか空いてませんでした。 容量が空いてないのが原因かなと思いデータベースのテーブルを いくつか削除したのですが、HDの空き容量は変わっておりません。 恐らく過去にテーブルを作成した際、データ領域が追加されてしまい、 削除してもそのデータ領域が変わっていないのではないかと思うのですがこのデータ領域を更新することは出来ないでしょうか? [要するに削除した分のデータ領域をHDの空き容量に反映できないのでしょうかという意味です] ご教授宜しくお願いします。

  • マスタデータ更新

    こんにちは。 システム開発の基礎的なところがわからないので、教えていただきたく、投稿させていただきます。 システム開発をほとんどやったことがないので、言葉が変なところもあるかと思いますが、宜しくお願いいたします。 サーバー上に、AというSQLServerのDBがあります。 今までは、システム管理者のみがAccessからA.DBのリンクテーブルを使い、マスタデータの更新/追加/削除を行っていましたが、今後、リーダークラスの人もできるようにしたい!という要望があり、そのインターフェース部分を作成しています。 いろいろと考え、フロントエンド側にAccessでB.mdbを作成し、そこには、A.DBと同じテーブル構造の一時TBLを作成し、B.mdbを開いた時にA.DBから全データを取得することにしました。(取得するところまではできています) ここから、設定するための画面作成をしますが、最終的に、更新/追加/削除されたデータは、どのようにA.DBにUPすればいいのでしょうか? 考えた方法として (1)B.mdb内に、一時テーブルとは別に、更に同じ構造の変更用テーブルを作成。 設定画面から更新/追加/削除されたデータは変更用テーブルに保存し、全ての処理が終了したら、変更用テーブルにあるデータを1つづつ見て、A.DBへ更新/追加/削除をかける (2)一時テーブルのデータを直接更新/追加/削除し、全ての処理が終了したら、全テーブルのレコードを1件づつ比較し、A.DBへ更新/追加/削除をかける というくらいしか思いつかないのです。 その他に思ったのが、一時テーブルもしくは変更用のテーブルに、レコード毎に「更新/追加/削除」がわかるようにフラグを設けて、そのフラグに従ったSQL文を発行する というくらいです。。。 根本的に、マスタデータに対する更新/追加/削除のやり方が間違っていたりしますか? 誰も聞ける人がいないので、どうぞ宜しくお願いいたします!!!

  • あるテーブルのデータを追加、更新、削除できないようにするには?

    SQLServer2000 あるテーブルのデータを追加、更新、削除できないようにするにはどのようにしたらいいでしょうか。 どなたかご存知の方、お教え下さい

  • 伝票入力のデータ更新方法について

    Accessで日毎の商品の製造入力を考えていますが、この入力を複数のパソコンで入力可能にしたいです。 画面は、 日付 2022/7/1 行 商品コード 製造数量 1 1001   10 2 1002   20 3 1003   30 「登録」 「削除」 のような感じです ちなみに、今までの作り方は、日付が入力されたら7/1の製造テーブルから明細をワークテーブルに入れて、画面で追加や変更をします。データ更新の時に、製造データの7/1のデータを削除して、追加や変更されたワークテーブルを製造テーブルにINSERTしてました。 ただ、これは他のパソコンで同時に7/1の製造入力が行われたら、他のパソコンで追加等のされたものが反映しないので、どのような方法で更新すれば良いですか? ただ、7/1の製造テーブルが他のPC使用中です!で止めたくはないです データベースはSQLSERVERを使います 宜しくお願い致します

  • データシートビューからフォームビューへ切り替えられない。

    こんにちは。 以前、DexMachina様にご教授頂いたのですが 違うフォームを作っていたら データシートビューからフォームビューへ切り替えられないので教えてくださいませ。(アクセス2003) 前回質問:http://okwave.jp/qa4982081.html フォーム上(デザインビュー)にテーブルをドラッグしました。 (サブフォームのデフォルトのビューは、データシートビューになっていますが単票ビューに切り替えました。) 一度保存し、再度フォームを開くと、単票ビューで表示されるので その状態で、 Sub test() Forms("フォーム1").SetFocus Select Case Forms("フォーム1").Form.CurrentView Case 1 'フォームビューの場合 → データシートビューに切替 DoCmd.RunCommand acCmdSubformDatasheetView ' Forms("フォーム1").DefaultView = 2 Case 2 'データシートビューの場合 → ピボットテーブルに切替 DoCmd.RunCommand acCmdSubformPivotTableView End Select End Sub を実行すると、ちゃんとデータシートビューに切り替わります。 そしてデータシートビューからフォームビューへ切り替えようと思い 再度上記のコードを実行しても何も起こりません。 (エラーにもなりません) なぜでしょうか? ちなみに規定のビューをデータシートビューにして上記マクロを実行しても同様何も起こりません。データシートビューのままです。 MsgBox Forms("フォーム1").DefaultView で値を取得してみたら データシートビューでもフォームビューでも0が返って来ます。 何か原因がわかる方いらっしゃいましたら ご教授よろしくお願いします。