Skip to content

Commit

Permalink
Traduction d'un fichier...
Browse files Browse the repository at this point in the history
par Laetita Avrot (et qq corrections par moi).
  • Loading branch information
gleu committed Jun 10, 2019
1 parent 6bfc60c commit 6b4e885
Showing 1 changed file with 64 additions and 61 deletions.
125 changes: 64 additions & 61 deletions postgresql/ref/alter_table.xml
Original file line number Diff line number Diff line change
Expand Up @@ -216,13 +216,12 @@ WITH ( MODULUS <replaceable class="parameter">litéral_numérique</replaceable>,
</para>

<para>
<literal>SET NOT NULL</literal> may only be applied to a column
providing none of the records in the table contain a
<literal>NULL</literal> value for the column. Ordinarily this is
checked during the <literal>ALTER TABLE</literal> by scanning the
entire table; however, if a valid <literal>CHECK</literal> constraint is
found which proves no <literal>NULL</literal> can exist, then the
table scan is skipped.
<literal>SET NOT NULL</literal> ne peut être utilisé que sur une colonne
ne comportant aucune valeur <literal>NULL</literal>. Normalement, cela entraîne une
vérification par un parcours complet de la table&snbp;; cependant, si une contrainte
<literal>CHECK</literal> valide est trouvée prouvant l'impossibilité d'avoir
de donnée <literal>NULL</literal> dans cette colonne, alors le parcours
de table n'est pas effectué.
</para>

<para>
Expand Down Expand Up @@ -375,33 +374,35 @@ WITH ( MODULUS <replaceable class="parameter">litéral_numérique</replaceable>,
</para>

<para>
Normally, this form will cause a scan of the table to verify that all
existing rows in the table satisfy the new constraint. But if
the <literal>NOT VALID</literal> option is used, this
potentially-lengthy scan is skipped. The constraint will still be
enforced against subsequent inserts or updates (that is, they'll fail
unless there is a matching row in the referenced table, in the case
of foreign keys, or they'll fail unless the new row matches the
specified check condition). But the
database will not assume that the constraint holds for all rows in
the table, until it is validated by using the <literal>VALIDATE
CONSTRAINT</literal> option.
See <xref linkend="sql-altertable-notes"
endterm="sql-altertable-notes-title"/> below for more information
about using the <literal>NOT VALID</literal> option.
Normalement, cette clause entraîne un parcours complet de la table pour vérifier
que les lignes pré-existantes satisfont la nouvelle contrainte. Mais si
l'option <literal>NOT VALID</literal> est utilisée, cette opération
potentiellement longue n'est pas effectuée. Cette contrainte sera néanmoins
toujours vérifiée pour les nouvelles insertions ou modifications de données
(c'est-à-dire que ces ordres échoueront s'il n'y a pas de ligne
correspondante dans la table de référence pour une clé étrangère ou si la
nouvelle ligne ne satisfait pas la condition d'une contrainte check).
La base de données ne considèrera pas la contrainte comme entièrement
vérifiée pour toutes les lignes tant qu'une validation effectuée par
l'ordre <literal>VALIDATE CONSTRAINT</literal> n'aura pas été effectuée.
Voir <xref linkend="sql-altertable-notes"
endterm="sql-altertable-notes-title"/> ci-dessous pour plus d'informations
sur l'utilisation de l'option <literal>NOT VALID</literal>.
</para>

<para>
Addition of a foreign key constraint requires a
<literal>SHARE ROW EXCLUSIVE</literal> lock on the referenced table,
in addition to the lock on the table receiving the constraint.
L'ajout d'une contrainte de clé étrangère requiert un verrou
<literal>SHARE ROW EXCLUSIVE</literal> sur la table référencée,
en plus du verrou sur la table bénéficiant de la nouvelle contrainte.
</para>

<para>
Additional restrictions apply when unique or primary key constraints
are added to partitioned tables; see <xref linkend="sql-createtable"/>.
Also, foreign key constraints on partitioned
tables may not be declared <literal>NOT VALID</literal> at present.
Des restrictions supplémentaires s'appliquent quand des contraintes
uniques ou des clés primaires sont ajoutées à des tables partitionnées.
Voir <xref linkend="sql-createtable" />.
De plus, les contraintes de clés étrangères sur les tables partitionnées
ne peuvent bénéficier de l'option <literal>NOT VALID</literal>, pour
l'instant.
</para>
</listitem>
</varlistentry>
Expand Down Expand Up @@ -480,9 +481,9 @@ WITH ( MODULUS <replaceable class="parameter">litéral_numérique</replaceable>,
Elle le fait en parcourant la table pour s'assurer qu'il n'existe
aucune ligne pour laquelle la contrainte n'est pas satisfaite. Si
la contrainte est déjà marquée valide, cette clause ne fait rien.
(See <xref linkend="sql-altertable-notes"
endterm="sql-altertable-notes-title"/> below for an explanation of the
usefulness of this command.)
(Voir <xref linkend="sql-altertable-notes"
endterm="sql-altertable-notes-title"/> ci-dessous pour une explication
sur l'utilisation de cette commande.)
</para>
</listitem>
</varlistentry>
Expand Down Expand Up @@ -636,9 +637,9 @@ WITH ( MODULUS <replaceable class="parameter">litéral_numérique</replaceable>,
<term><literal>SET WITHOUT OIDS</literal></term>
<listitem>
<para>
Backward-compatible syntax for removing the <literal>oid</literal>
system column. As <literal>oid</literal> system columns cannot be
added anymore, this never has an effect.
Cette syntaxe permet de supprimer les colonnes système <literal>oid</literal>.
Comme les colonnes système <literal>oid</literal> ne peuvent plus être ajoutées,
cette clause n'a aucun effet.
</para>
</listitem>
</varlistentry>
Expand All @@ -652,10 +653,11 @@ WITH ( MODULUS <replaceable class="parameter">litéral_numérique</replaceable>,
nouveau tablespace. Les index de la table, s'il y en a, ne sont pas
déplacés mais ils peuvent l'être avec des commandes <literal>SET
TABLESPACE</literal> séparées.
When applied to a partitioned table, nothing is moved, but any
partitions created afterwards with
<command>CREATE TABLE PARTITION OF</command> will use that tablespace,
unless the <literal>TABLESPACE</literal> clause is used to override it.
Quand cette clause est appliquée à une table partitionnée, aucune
partition pré-existante n'est déplacée. Cependant, toute partition
créée ensuite avec l'ordre <command>CREATE TABLE PARTITION OF</command>
utilisera ce tablespace, à moins qu'une autre clause <literal>TABLESPACE</literal>
ne soit utilisée pour la remplacer.
</para>

<para>
Expand Down Expand Up @@ -1253,29 +1255,30 @@ WITH ( MODULUS <replaceable class="parameter">litéral_numérique</replaceable>,
</para>

<para>
Scanning a large table to verify a new foreign key or check constraint
can take a long time, and other updates to the table are locked out
until the <command>ALTER TABLE ADD CONSTRAINT</command> command is
committed. The main purpose of the <literal>NOT VALID</literal>
constraint option is to reduce the impact of adding a constraint on
concurrent updates. With <literal>NOT VALID</literal>,
the <command>ADD CONSTRAINT</command> command does not scan the table
and can be committed immediately. After that, a <literal>VALIDATE
CONSTRAINT</literal> command can be issued to verify that existing rows
satisfy the constraint. The validation step does not need to lock out
concurrent updates, since it knows that other transactions will be
enforcing the constraint for rows that they insert or update; only
pre-existing rows need to be checked. Hence, validation acquires only
a <literal>SHARE UPDATE EXCLUSIVE</literal> lock on the table being
altered. (If the constraint is a foreign key then a <literal>ROW
SHARE</literal> lock is also required on the table referenced by the
constraint.) In addition to improving concurrency, it can be useful to
use <literal>NOT VALID</literal> and <literal>VALIDATE
CONSTRAINT</literal> in cases where the table is known to contain
pre-existing violations. Once the constraint is in place, no new
violations can be inserted, and the existing problems can be corrected
at leisure until <literal>VALIDATE CONSTRAINT</literal> finally
succeeds.
Le parcours d'une grosse table pour vérifier une nouvelle contrainte de clé
étrangère ou une nouvelle contrainte de vérification peut prendre beaucoup
de temps, et toute modification de données est bloquée tant que la
commande <command>ALTER TABLE ADD CONSTRAINT</command> n'est pas validée.
Le but principal de l'option <literal>NOT VALID</literal> est de réduire
l'impact de l'ajout d'une nouvelle contrainte sur les demandes de modifications
concurrentes. Avec la clause <literal>NOT VALID</literal>, la commande
<command>ADD CONSTRAINT</command> n'effectue pas de parcours complet de la table
et peut donc être validée instantanément. Ensuite, une commande
<literal>VALIDATE CONSTRAINT</literal> peut être lancée pour vérifier
que les lignes existantes satisfont la contrainte. L'étape de validation ne
nécessite pas de verrou empêchant les modifications concurrentes car la
contrainte sera vérifiée pour les lignes insérées ou modifiées&nbsp;; seules les
lignes antérieures à l'ajout de la contrainte doivent être vérifiées. Ainsi,
la validation ne nécessite qu'un verrou <literal>SHARE UPDATE EXCLUSIVE</literal>
sur la table indiquée. (Si la contrainte est une contrainte de clé étrangère,
alors un verrou <literal>ROW SHARE</literal> est aussi nécessaire sur la
table référencée par la contrainte.) En plus d'améliorer la gestion de la
concurrence des accès, on peut utilsier la clause <literal>NOT VALID</literal>
suivie d'un <literal>VALIDATE CONSTRAINT</literal> dans le cas où des
violations de cette contrainte sont connues. Une fois que la contrainte
est en place, aucune nouvelle violation ne pourra avoir lieu et le problème
préexistant pourra être géré plus tard pour qu'enfin une commande <literal>VALIDATE
CONSTRAINT</literal> puisse finalement aboutir.
</para>

<para>
Expand Down

0 comments on commit 6b4e885

Please sign in to comment.