SQL Server 2005では、いくつかの権利を付与することが可能ですビュー - 私はこの概念を理解していません。SQL Serverで表示できるGRANT DML権限の目的は何ですか?
SELECT
とREFERENCE
権は明白ですが、私はINSERT
、DELETE
、UPDATE
について困惑しています。私は彼らが理由のためにそこにいると確信していますが、私はそれを見ません。
これらの権限は、ビューによって参照されるテーブルに伝播される可能性がありますか?
SQL Server 2005では、いくつかの権利を付与することが可能ですビュー - 私はこの概念を理解していません。SQL Serverで表示できるGRANT DML権限の目的は何ですか?
SELECT
とREFERENCE
権は明白ですが、私はINSERT
、DELETE
、UPDATE
について困惑しています。私は彼らが理由のためにそこにいると確信していますが、私はそれを見ません。
これらの権限は、ビューによって参照されるテーブルに伝播される可能性がありますか?
名前にもかかわらず、ビューはSQL Serverで更新可能です。 the documentation(「更新可能なビュー」セクション」)
を言い換えあなたがいる限り、以下の条件に該当するように、ビューを介して、基礎となるベーステーブルのデータを変更することができる:
変更を、 UPDATE、INSERT、およびDELETEステートメントを含む、
のみつのベーステーブルの列を参照する必要があります。ビューに変更された列は、直接テーブルcoluにおける基礎データを参照する必要がありますmns。
集約関数:AVG、COUNT、SUM、MIN、MAX、GROUPING、STDEV、STDEVP、VAR、およびVARP列は、以下を介してのような任意の他の方法に由来
ことができません。計算。他の列を使用する式から列を計算することはできません。
集合演算子UNION、UNION ALL、CROSSJOIN、EXCEPT、およびINTERSECTを使用して形成された列
は計算に要し、更新もできません。変更される列は、GROUP BY句、HAVING句、またはDISTINCT句の影響を受けません。
TOPはWITH CHECK OPTION句と共にビューのselect_statementのどこにも使用されません。さらに
、あなたはこれらの制限を回避ビューにINSTEAD OF
トリガーを持つことができます。
TL; DR - ビューに対してDMLを実行できる多くのシナリオがあります。これらの操作を行うことができる権限を持つ権限を持つことは、それを考えると意味があります。
あなたは正しいですが、私はVIEWパーミッションを検索しましたが、一般的なビューのドキュメントをチェックしませんでした。私は時にはいくつかのビューを更新しようとしましたが、ほとんどのビューが更新可能なビューの要件に準拠していないため、私の実験は失敗しました。 – Luca