MSDNによれば、単純な選択で構成されるビューは自動的にテーブルに対して挿入/更新/削除ステートメントを使用できるようにします。これを防ぐ方法はありますか?SQL Serverにビューが読み取り専用であることを伝えるために、それを使ってテーブルを変更することはできませんか?Sql Serverで読み取り専用ビューを作成する
7
A
答えて
12
最も良い方法は、ビューでUPDATE/DELETE/INSERT
の権限を削除することです。
とは別に、ビューにINSTEAD OF
というトリガーを作成するだけで、更新をサイレントに失敗させることはありません。または、quite a few constructs that make views non updatableが存在します。意味や効率を変えずに違反したものを選ぶことができます。
編集:以下は法案に適合しているようです。
CREATE VIEW Bar
AS
SELECT TOP 100 PERCENT x
FROM foo
WITH CHECK OPTION
7
あなたはこのように、SQL Serverは操作をDELETE/INSERT/UPDATE中に失敗するようにするためにUNION
演算子を指定することができます。
create view SampleView
as
select ID, value from table
union all
select 0, '0' where 1=0
最後のクエリがローを返しませんまったく同じですが、最初のクエリと同じデータ型のフィールドが同じでなければなりません。UNION
を安全に使用するには詳細については、このリンクを参照してください:Different ways to make a table read only in a SQL Server database
+0
「UNION SELECT TOP 0 * FROMテーブル」(少なくともSQL Server 2014では)を追加することもできます。 – Christoph
関連する問題
- 1. SQL Serverの読み取り専用ファイルグループ
- 2. 読み取り専用アクセスでSQL Serverデータベースを開きます -
- 3. SQL2000読み取り専用ビュー
- 4. powershellで読み取り専用メンバーを作成するには?
- 5. itext7で読み取り専用pdfを作成する方法
- 6. phpMyAdminで読み取り専用ユーザーを作成する
- 7. 読み取り専用自動対(読み取り専用)プロパティ
- 8. SharePoint 2010で読み取り専用列を作成
- 9. データベースの一貫性のある読み取り専用ビュー
- 10. 読み取り専用ビューを編集する
- 11. CurrentCulture.DateTimeFormat.LongTimePattern読み取り専用
- 12. 読み取り専用プロパティ
- 13. 読み取り専用プロパティ
- 14. 読み取り専用テキストボックス
- 15. 読み取り専用
- 16. 読み取り専用アソシエーション
- 17. 読み取り専用TFS
- 18. は読み取り専用
- 19. SQL Server 2008はテーブルレベルの読み取り専用をサポートしていますか?
- 20. 読み取り専用undeletableファイルを作成
- 21. Sqlite python - 読み取り専用データベースを作成しよう
- 22. PythonでElasticSearch用の読み取り専用クライアントを作成する方法は?
- 23. C#ファイルを読み取り専用で読み取り/書き込みする
- 24. 読み取り専用コンボボックスですか?
- 25. .Bottomは読み取り専用です
- 26. djangoフォームでオプションで読み取り専用フィールドを作成するには?
- 27. 読み取り専用データベース/ Webサービスの作成?
- 28. "読み取り専用"ファイルの作成方法?
- 29. ユーザーの読み取り専用Exchangeタスクの作成
- 30. LINQ to SQL、匿名型は読み取り専用です
+1のアクセス許可は、このコードではありません。しかし、フォークがビューを介して書き込むことができる場合は、ベーステーブルにもパーミッションがあると思われます。 – gbn
ありがとう、魅力のように動作します。 これらのビューは実際にはユーザーがアクセスできない別のデータベースを参照します。私はそれらを読み取り専用にして、アクセス権のあるデータベースのビューを介してアクセスできないデータベースをユーザーが変更できないようにしたいと考えています。オブジェクトごとのアクセス権の代わりにデータベースごとのアクセス権を使用して、単純なものを維持し、権限の定義に違反しないことを確実にしたいと考えています。 –
最後にコードを追加して危険を指摘します。それは 'WITH CHECK OPTION'にヒンジがあるようです。 SQL Server Management Studioを使用してビューを後で編集した場合、「WITH CHECK OPTION」は表示されず、ビューは再び読み書きされます。 – BIBD