Skip to content

Commit 60efce5

Browse files
authored
Merge pull request #264 from sunshinerxu/master
Fix#263:翻译SQL命令CREATE POLICY未翻译的部分
2 parents 0b12fac + 0dd9dca commit 60efce5

File tree

1 file changed

+35
-97
lines changed

1 file changed

+35
-97
lines changed

postgresql/doc/src/sgml/ref/create_policy.sgml

+35-97
Original file line numberDiff line numberDiff line change
@@ -571,15 +571,7 @@ ____________________________________________________________________________-->
571571
</para>
572572
____________________________________________________________________________-->
573573
<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> 表达式定义哪些被修改的行允许存回到关系中。
583575
</para>
584576

585577
<!--==========================orignal english content==========================
@@ -616,19 +608,7 @@ ____________________________________________________________________________-->
616608
</para>
617609
____________________________________________________________________________-->
618610
<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>策略用也必须能访问正被更新的行。
632612
</para>
633613

634614
<!--==========================orignal english content==========================
@@ -647,17 +627,7 @@ ____________________________________________________________________________-->
647627
</para>
648628
____________________________________________________________________________-->
649629
<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>会静默地避免)。
661631
</para>
662632
</listitem>
663633
</varlistentry>
@@ -704,18 +674,7 @@ ____________________________________________________________________________-->
704674
</para>
705675
____________________________________________________________________________-->
706676
<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>策略,用户也必须能访问正被删除的行。
719678
</para>
720679

721680
<!--==========================orignal english content==========================
@@ -740,7 +699,7 @@ ____________________________________________________________________________-->
740699
<!--==========================orignal english content==========================
741700
<title>Policies Applied by Command Type</title>
742701
____________________________________________________________________________-->
743-
<title>===Policies Applied by Command Type</title>
702+
<title>按命令类型应用的策略</title>
744703
<tgroup cols="6">
745704
<colspec colnum="4" colname="update-using"/>
746705
<colspec colnum="5" colname="update-check"/>
@@ -756,11 +715,11 @@ ____________________________________________________________________________-->
756715
</row>
757716
____________________________________________________________________________-->
758717
<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>
764723
</row>
765724
<!--==========================orignal english content==========================
766725
<row>
@@ -772,11 +731,11 @@ ____________________________________________________________________________-->
772731
</row>
773732
____________________________________________________________________________-->
774733
<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>
780739
</row>
781740
</thead>
782741
<tbody>
@@ -792,7 +751,7 @@ ____________________________________________________________________________-->
792751
____________________________________________________________________________-->
793752
<row>
794753
<entry><command>SELECT</command></entry>
795-
<entry>Existing row</entry>
754+
<entry>现有行</entry>
796755
<entry>&mdash;</entry>
797756
<entry>&mdash;</entry>
798757
<entry>&mdash;</entry>
@@ -810,9 +769,9 @@ ____________________________________________________________________________-->
810769
____________________________________________________________________________-->
811770
<row>
812771
<entry><command>SELECT FOR UPDATE/SHARE</command></entry>
813-
<entry>Existing row</entry>
772+
<entry>现有行</entry>
814773
<entry>&mdash;</entry>
815-
<entry>Existing row</entry>
774+
<entry>现有行</entry>
816775
<entry>&mdash;</entry>
817776
<entry>&mdash;</entry>
818777
</row>
@@ -829,7 +788,7 @@ ____________________________________________________________________________-->
829788
<row>
830789
<entry><command>INSERT</command></entry>
831790
<entry>&mdash;</entry>
832-
<entry>New row</entry>
791+
<entry>新行</entry>
833792
<entry>&mdash;</entry>
834793
<entry>&mdash;</entry>
835794
<entry>&mdash;</entry>
@@ -855,15 +814,13 @@ ____________________________________________________________________________-->
855814
<row>
856815
<entry><command>INSERT ... RETURNING</command></entry>
857816
<entry>
858-
===New row <footnote id="rls-select-priv">
817+
新行<footnote id="rls-select-priv">
859818
<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>子句)。
863820
</para>
864821
</footnote>
865822
</entry>
866-
<entry>New row</entry>
823+
<entry>新行</entry>
867824
<entry>&mdash;</entry>
868825
<entry>&mdash;</entry>
869826
<entry>&mdash;</entry>
@@ -883,11 +840,11 @@ ____________________________________________________________________________-->
883840
<row>
884841
<entry><command>UPDATE</command></entry>
885842
<entry>
886-
===Existing &amp; new rows <footnoteref linkend="rls-select-priv"/>
843+
现有 &amp; 新行 <footnoteref linkend="rls-select-priv"/>
887844
</entry>
888845
<entry>&mdash;</entry>
889-
<entry>Existing row</entry>
890-
<entry>New row</entry>
846+
<entry>现有行</entry>
847+
<entry>新行</entry>
891848
<entry>&mdash;</entry>
892849
</row>
893850
<!--==========================orignal english content==========================
@@ -905,12 +862,12 @@ ____________________________________________________________________________-->
905862
<row>
906863
<entry><command>DELETE</command></entry>
907864
<entry>
908-
===Existing row <footnoteref linkend="rls-select-priv"/>
865+
现有行<footnoteref linkend="rls-select-priv"/>
909866
</entry>
910867
<entry>&mdash;</entry>
911868
<entry>&mdash;</entry>
912869
<entry>&mdash;</entry>
913-
<entry>Existing row</entry>
870+
<entry>现有行</entry>
914871
</row>
915872
<!--==========================orignal english content==========================
916873
<row>
@@ -924,10 +881,10 @@ ____________________________________________________________________________-->
924881
____________________________________________________________________________-->
925882
<row>
926883
<entry><command>ON CONFLICT DO UPDATE</command></entry>
927-
<entry>===Existing &amp; new rows</entry>
884+
<entry>现有 &amp; 新行</entry>
928885
<entry>&mdash;</entry>
929-
<entry>Existing row</entry>
930-
<entry>New row</entry>
886+
<entry>现有行</entry>
887+
<entry>新行</entry>
931888
<entry>&mdash;</entry>
932889
</row>
933890
</tbody>
@@ -940,7 +897,7 @@ ____________________________________________________________________________-->
940897
<!--==========================orignal english content==========================
941898
<title>Application of Multiple Policies</title>
942899
____________________________________________________________________________-->
943-
<title>===Application of Multiple Policies</title>
900+
<title>多重策略的应用</title>
944901

945902
<!--==========================orignal english content==========================
946903
<para>
@@ -954,13 +911,7 @@ ____________________________________________________________________________-->
954911
</para>
955912
____________________________________________________________________________-->
956913
<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>操作符组合在一起。
964915
</para>
965916

966917
<!--==========================orignal english content==========================
@@ -977,15 +928,7 @@ ____________________________________________________________________________-->
977928
</para>
978929
____________________________________________________________________________-->
979930
<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>策略,则拒绝访问。
989932
</para>
990933

991934
<!--==========================orignal english content==========================
@@ -996,9 +939,7 @@ ____________________________________________________________________________-->
996939
</para>
997940
____________________________________________________________________________-->
998941
<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>策略视为与所应用的任何其他类型的策略具有相同的类型。
1002943
</para>
1003944

1004945
<!--==========================orignal english content==========================
@@ -1039,10 +980,7 @@ AND
1039980
</programlisting></para>
1040981
____________________________________________________________________________-->
1041982
<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>两种权限都需要,如果每种类型都有多个适用的策略,则将之以下面的方式组合:
1046984

1047985
<programlisting>
1048986
<replaceable>expression</replaceable> from RESTRICTIVE SELECT/ALL policy 1

0 commit comments

Comments
 (0)