@@ -571,15 +571,7 @@ ____________________________________________________________________________-->
571
571
</para>
572
572
____________________________________________________________________________-->
573
573
<para>
574
- 为一条策略使用<literal>UPDATE</literal>表示它适用于
575
- <literal>UPDATE</literal>、<literal>SELECT FOR UPDATE</literal>和<literal>SELECT FOR SHARE</literal>命令,还有<literal>INSERT</literal>命令的辅助性的<literal>ON CONFLICT DO UPDATE</literal>子句。===Since <literal>UPDATE</literal>
576
- involves pulling an existing record and replacing it with a new
577
- modified record, <literal>UPDATE</literal>
578
- policies accept both a <literal>USING</literal> expression and
579
- a <literal>WITH CHECK</literal> expression.。<literal>USING</literal>
580
- 表达式决定<literal>UPDATE</literal>命令将能看到哪些要对其操作
581
- 的记录,而<literal>WITH CHECK</literal>表达式定义哪些被修改的
582
- 行被允许存回到关系中。
574
+ 对策略使用<literal>UPDATE</literal> 意味着它将应用于<literal>UPDATE</literal>、<literal>SELECT FOR UPDATE</literal>和<literal>SELECT FOR SHARE</literal> 命令,还有<literal>INSERT</literal> 命令的辅助性的<literal>ON CONFLICT DO UPDATE</literal> 子句。由于<literal>UPDATE</literal> 需要提取现有的记录并且用新修改的记录代替,故<literal>UPDATE</literal> 策略接受<literal>USING</literal> 表达式和<literal>WITH CHECK</literal> 表达式。<literal>USING</literal> 表达式决定<literal>UPDATE</literal> 命令将能看到哪些要对其操作的记录,而<literal>WITH CHECK</literal> 表达式定义哪些被修改的行允许存回到关系中。
583
575
</para>
584
576
585
577
<!--==========================orignal english content==========================
@@ -616,19 +608,7 @@ ____________________________________________________________________________-->
616
608
</para>
617
609
____________________________________________________________________________-->
618
610
<para>
619
- ===Typically an <literal>UPDATE</literal> command also needs to read
620
- data from columns in the relation being updated (e.g., in a
621
- <literal>WHERE</literal> clause or a <literal>RETURNING</literal>
622
- clause, or in an expression on the right hand side of the
623
- <literal>SET</literal> clause). In this case,
624
- <literal>SELECT</literal> rights are also required on the relation
625
- being updated, and the appropriate <literal>SELECT</literal> or
626
- <literal>ALL</literal> policies will be applied in addition to
627
- the <literal>UPDATE</literal> policies. Thus the user must have
628
- access to the row(s) being updated through a <literal>SELECT</literal>
629
- or <literal>ALL</literal> policy in addition to being granted
630
- permission to update the row(s) via an <literal>UPDATE</literal>
631
- or <literal>ALL</literal> policy.
611
+ 典型地,<literal>UPDATE</literal>命令也需要从待更新关系中的列读数据(例如在<literal>WHERE</literal>子句、<literal>RETURNING</literal>子句或在<literal>SET</literal>子句右侧的表达式中)。这种情况下,正被更新的关系上也需要<literal>SELECT</literal>权限,并且除了<literal>UPDATE</literal>策略外,也要应用适当的<literal>SELECT</literal>或者<literal>ALL</literal>策略。这样,除由<literal>UPDATE</literal>或<literal>ALL</literal>策略授权更新行之外,通过<literal>SELECT</literal>或<literal>ALL</literal>策略用也必须能访问正被更新的行。
632
612
</para>
633
613
634
614
<!--==========================orignal english content==========================
@@ -647,17 +627,7 @@ ____________________________________________________________________________-->
647
627
</para>
648
628
____________________________________________________________________________-->
649
629
<para>
650
- ===When an <literal>INSERT</literal> command has an auxiliary
651
- <literal>ON CONFLICT DO UPDATE</literal> clause, if the
652
- <literal>UPDATE</literal> path is taken, the row to be updated is
653
- first checked against the <literal>USING</literal> expressions of
654
- any <literal>UPDATE</literal> policies, and then the new updated row
655
- is checked against the <literal>WITH CHECK</literal> expressions.
656
- Note, however, that unlike a standalone <literal>UPDATE</literal>
657
- command, if the existing row does not pass the
658
- <literal>USING</literal> expressions, an error will be thrown (the
659
- <literal>UPDATE</literal> path will <emphasis>never</emphasis> be silently
660
- avoided).
630
+ 当<literal>INSERT</literal>命令附加了<literal>ON CONFLICT DO UPDATE</literal>子句时,如果采用<literal>UPDATE</literal>路径,先以任何<literal>UPDATE</literal>策略的<literal>USING</literal>表达式检查待更新的行,然后以<literal>WITH CHECK</literal>表达式检查新修改的行。但要注意的是,不同于单独的<literal>UPDATE</literal>命令,如果现有的行不能通过<literal>USING</literal>表达式检查,则抛出错误(<literal>UPDATE</literal>路径<emphasis>永不</emphasis>会静默地避免)。
661
631
</para>
662
632
</listitem>
663
633
</varlistentry>
@@ -704,18 +674,7 @@ ____________________________________________________________________________-->
704
674
</para>
705
675
____________________________________________________________________________-->
706
676
<para>
707
- ===In most cases a <literal>DELETE</literal> command also needs to read
708
- data from columns in the relation that it is deleting from (e.g.,
709
- in a <literal>WHERE</literal> clause or a
710
- <literal>RETURNING</literal> clause). In this case,
711
- <literal>SELECT</literal> rights are also required on the relation,
712
- and the appropriate <literal>SELECT</literal> or
713
- <literal>ALL</literal> policies will be applied in addition to
714
- the <literal>DELETE</literal> policies. Thus the user must have
715
- access to the row(s) being deleted through a <literal>SELECT</literal>
716
- or <literal>ALL</literal> policy in addition to being granted
717
- permission to delete the row(s) via a <literal>DELETE</literal> or
718
- <literal>ALL</literal> policy.
677
+ 大多数情况下,<literal>DELETE</literal>命令也需要从其所删除的关系中的列读取数据(例如在<literal>WHERE</literal>子句或<literal>RETURNING</literal>子句中)。这种情况下,在该关系上也需要<literal>SELECT</literal>权限,并且除了<literal>DELETE</literal>策略,也要应用适当的<literal>SELECT</literal>或<literal>ALL</literal>策略。这样,除由<literal>DELETE</literal>或<literal>ALL</literal>策略授权删除行之外,通过<literal>SELECT</literal>或<literal>ALL</literal>策略,用户也必须能访问正被删除的行。
719
678
</para>
720
679
721
680
<!--==========================orignal english content==========================
@@ -740,7 +699,7 @@ ____________________________________________________________________________-->
740
699
<!--==========================orignal english content==========================
741
700
<title>Policies Applied by Command Type</title>
742
701
____________________________________________________________________________-->
743
- <title>===Policies Applied by Command Type </title>
702
+ <title>按命令类型应用的策略 </title>
744
703
<tgroup cols="6">
745
704
<colspec colnum="4" colname="update-using"/>
746
705
<colspec colnum="5" colname="update-check"/>
@@ -756,11 +715,11 @@ ____________________________________________________________________________-->
756
715
</row>
757
716
____________________________________________________________________________-->
758
717
<row>
759
- <entry morerows="1">Command </entry>
760
- <entry><literal>SELECT/ALL policy </literal></entry>
761
- <entry><literal>INSERT/ALL policy </literal></entry>
762
- <entry spanname="update"><literal>UPDATE/ALL policy </literal></entry>
763
- <entry><literal>DELETE/ALL policy </literal></entry>
718
+ <entry morerows="1">命令 </entry>
719
+ <entry><literal>SELECT/ALL策略 </literal></entry>
720
+ <entry><literal>INSERT/ALL策略 </literal></entry>
721
+ <entry spanname="update"><literal>UPDATE/ALL策略 </literal></entry>
722
+ <entry><literal>DELETE/ALL策略 </literal></entry>
764
723
</row>
765
724
<!--==========================orignal english content==========================
766
725
<row>
@@ -772,11 +731,11 @@ ____________________________________________________________________________-->
772
731
</row>
773
732
____________________________________________________________________________-->
774
733
<row>
775
- <entry><literal>USING expression </literal></entry>
776
- <entry><literal>WITH CHECK expression </literal></entry>
777
- <entry><literal>USING expression </literal></entry>
778
- <entry><literal>WITH CHECK expression </literal></entry>
779
- <entry><literal>USING expression </literal></entry>
734
+ <entry><literal>USING表达式 </literal></entry>
735
+ <entry><literal>WITH CHECK表达式 </literal></entry>
736
+ <entry><literal>USING表达式 </literal></entry>
737
+ <entry><literal>WITH CHECK表达式 </literal></entry>
738
+ <entry><literal>USING表达式 </literal></entry>
780
739
</row>
781
740
</thead>
782
741
<tbody>
@@ -792,7 +751,7 @@ ____________________________________________________________________________-->
792
751
____________________________________________________________________________-->
793
752
<row>
794
753
<entry><command>SELECT</command></entry>
795
- <entry>Existing row </entry>
754
+ <entry>现有行 </entry>
796
755
<entry>—</entry>
797
756
<entry>—</entry>
798
757
<entry>—</entry>
@@ -810,9 +769,9 @@ ____________________________________________________________________________-->
810
769
____________________________________________________________________________-->
811
770
<row>
812
771
<entry><command>SELECT FOR UPDATE/SHARE</command></entry>
813
- <entry>Existing row </entry>
772
+ <entry>现有行 </entry>
814
773
<entry>—</entry>
815
- <entry>Existing row </entry>
774
+ <entry>现有行 </entry>
816
775
<entry>—</entry>
817
776
<entry>—</entry>
818
777
</row>
@@ -829,7 +788,7 @@ ____________________________________________________________________________-->
829
788
<row>
830
789
<entry><command>INSERT</command></entry>
831
790
<entry>—</entry>
832
- <entry>New row </entry>
791
+ <entry>新行 </entry>
833
792
<entry>—</entry>
834
793
<entry>—</entry>
835
794
<entry>—</entry>
@@ -855,15 +814,13 @@ ____________________________________________________________________________-->
855
814
<row>
856
815
<entry><command>INSERT ... RETURNING</command></entry>
857
816
<entry>
858
- ===New row <footnote id="rls-select-priv">
817
+ 新行 <footnote id="rls-select-priv">
859
818
<para>
860
- ===If read access is required to the existing or new row (for example,
861
- a <literal>WHERE</literal> or <literal>RETURNING</literal> clause
862
- that refers to columns from the relation).
819
+ 对于现有行或新行,如果需要读访问的话(例如涉及到关系内列的<literal>WHERE</literal>或<literal>RETURNING</literal>子句)。
863
820
</para>
864
821
</footnote>
865
822
</entry>
866
- <entry>New row </entry>
823
+ <entry>新行 </entry>
867
824
<entry>—</entry>
868
825
<entry>—</entry>
869
826
<entry>—</entry>
@@ -883,11 +840,11 @@ ____________________________________________________________________________-->
883
840
<row>
884
841
<entry><command>UPDATE</command></entry>
885
842
<entry>
886
- ===Existing & new rows <footnoteref linkend="rls-select-priv"/>
843
+ 现有 & 新行 <footnoteref linkend="rls-select-priv"/>
887
844
</entry>
888
845
<entry>—</entry>
889
- <entry>Existing row </entry>
890
- <entry>New row </entry>
846
+ <entry>现有行 </entry>
847
+ <entry>新行 </entry>
891
848
<entry>—</entry>
892
849
</row>
893
850
<!--==========================orignal english content==========================
@@ -905,12 +862,12 @@ ____________________________________________________________________________-->
905
862
<row>
906
863
<entry><command>DELETE</command></entry>
907
864
<entry>
908
- ===Existing row <footnoteref linkend="rls-select-priv"/>
865
+ 现有行 <footnoteref linkend="rls-select-priv"/>
909
866
</entry>
910
867
<entry>—</entry>
911
868
<entry>—</entry>
912
869
<entry>—</entry>
913
- <entry>Existing row </entry>
870
+ <entry>现有行 </entry>
914
871
</row>
915
872
<!--==========================orignal english content==========================
916
873
<row>
@@ -924,10 +881,10 @@ ____________________________________________________________________________-->
924
881
____________________________________________________________________________-->
925
882
<row>
926
883
<entry><command>ON CONFLICT DO UPDATE</command></entry>
927
- <entry>===Existing & new rows </entry>
884
+ <entry>现有 & 新行 </entry>
928
885
<entry>—</entry>
929
- <entry>Existing row </entry>
930
- <entry>New row </entry>
886
+ <entry>现有行 </entry>
887
+ <entry>新行 </entry>
931
888
<entry>—</entry>
932
889
</row>
933
890
</tbody>
@@ -940,7 +897,7 @@ ____________________________________________________________________________-->
940
897
<!--==========================orignal english content==========================
941
898
<title>Application of Multiple Policies</title>
942
899
____________________________________________________________________________-->
943
- <title>===Application of Multiple Policies </title>
900
+ <title>多重策略的应用 </title>
944
901
945
902
<!--==========================orignal english content==========================
946
903
<para>
@@ -954,13 +911,7 @@ ____________________________________________________________________________-->
954
911
</para>
955
912
____________________________________________________________________________-->
956
913
<para>
957
- ===When multiple policies of different command types apply to the same command
958
- (for example, <literal>SELECT</literal> and <literal>UPDATE</literal>
959
- policies applied to an <literal>UPDATE</literal> command), then the user
960
- must have both types of permissions (for example, permission to select rows
961
- from the relation as well as permission to update them). Thus the
962
- expressions for one type of policy are combined with the expressions for
963
- the other type of policy using the <literal>AND</literal> operator.
914
+ 当多种不同命令类型的策略应用于相同命令(例如<literal>SELECT</literal>和<literal>UPDATE</literal>策略应用于<literal>UPDATE</literal>命令)时,用户就必须同时具有这两种类型的权限(例如从关系中选取行和更新的权限)。这样一种策略类型的表达式就与另一种策略类型的表达式通过使用<literal>AND</literal>操作符组合在一起。
964
915
</para>
965
916
966
917
<!--==========================orignal english content==========================
@@ -977,15 +928,7 @@ ____________________________________________________________________________-->
977
928
</para>
978
929
____________________________________________________________________________-->
979
930
<para>
980
- ===When multiple policies of the same command type apply to the same command,
981
- then there must be at least one <literal>PERMISSIVE</literal> policy
982
- granting access to the relation, and all of the
983
- <literal>RESTRICTIVE</literal> policies must pass. Thus all the
984
- <literal>PERMISSIVE</literal> policy expressions are combined using
985
- <literal>OR</literal>, all the <literal>RESTRICTIVE</literal> policy
986
- expressions are combined using <literal>AND</literal>, and the results are
987
- combined using <literal>AND</literal>. If there are no
988
- <literal>PERMISSIVE</literal> policies, then access is denied.
931
+ 当相同命令类型的多种策略应用于同一命令时,则必须至少有一个<literal>PERMISSIVE</literal>策略授权对该关系的访问,所有的<literal>RESTRICTIVE</literal>策略必须通过。这样,所有的<literal>PERMISSIVE</literal>策略表达式都用<literal>OR</literal>来组合,所有的<literal>RESTRICTIVE</literal>策略表达式都用<literal>AND</literal>来组合,而结果用<literal>AND</literal>来组合。如果没有<literal>PERMISSIVE</literal>策略,则拒绝访问。
989
932
</para>
990
933
991
934
<!--==========================orignal english content==========================
@@ -996,9 +939,7 @@ ____________________________________________________________________________-->
996
939
</para>
997
940
____________________________________________________________________________-->
998
941
<para>
999
- ===Note that, for the purposes of combining multiple policies,
1000
- <literal>ALL</literal> policies are treated as having the same type as
1001
- whichever other type of policy is being applied.
942
+ 要注意的是,出于组合多种策略的目的,将<literal>ALL</literal>策略视为与所应用的任何其他类型的策略具有相同的类型。
1002
943
</para>
1003
944
1004
945
<!--==========================orignal english content==========================
@@ -1039,10 +980,7 @@ AND
1039
980
</programlisting></para>
1040
981
____________________________________________________________________________-->
1041
982
<para>
1042
- ===For example, in an <literal>UPDATE</literal> command requiring both
1043
- <literal>SELECT</literal> and <literal>UPDATE</literal> permissions, if
1044
- there are multiple applicable policies of each type, they will be combined
1045
- as follows:
983
+ 例如,在<literal>UPDATE</literal>命令中,<literal>SELECT</literal>和<literal>UPDATE</literal>两种权限都需要,如果每种类型都有多个适用的策略,则将之以下面的方式组合:
1046
984
1047
985
<programlisting>
1048
986
<replaceable>expression</replaceable> from RESTRICTIVE SELECT/ALL policy 1
0 commit comments