<p>Syntaxe :</p>
<pre><code class="lang-auto">ALTER TABLE {TABLENAME}
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL}
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}
WITH VALUES
</code></pre>
<p>Exemple :</p>
<pre><code class="lang-auto">ALTER TABLE SomeTable
ADD SomeCol Bit NULL --Or NOT NULL.
CONSTRAINT D_SomeTable_SomeCol --When Omitted a Default-Constraint Name is autogenerated.
DEFAULT (0)--Optional Default-Constraint.
WITH VALUES --Add if Column is Nullable and you want the Default Value for Existing Records.
</code></pre>
<p>Remarques :</p>
<p><strong>Nom de contrainte optionnel :</strong></p>
<p>Si vous omettez <code>CONSTRAINT D_SomeTable_SomeCol</code>, alors SQL Server générera automatiquement</p>
<pre><code>un nom de contrainte par défaut avec un nom bizarre comme : DF__SomeTa__SomeC__4FB7FEF6
</code></pre>
<p><strong>Instruction With-Values optionnelle :</strong></p>
<p>Le <code>WITH VALUES</code> n’est nécessaire que lorsque votre colonne est Nullable</p>
<pre><code>et que vous souhaitez que la valeur par défaut soit utilisée pour les enregistrements existants.
</code></pre>
<p>Si votre colonne est <code>NOT NULL</code>, alors la valeur par défaut sera automatiquement utilisée</p>
<pre><code>pour tous les enregistrements existants, que vous spécifiiez WITH VALUES ou non.
</code></pre>
<p><strong>Comment les insertions fonctionnent avec une contrainte par défaut :</strong></p>
<p>Si vous insérez un enregistrement dans <code>SomeTable</code> et que vous ne spécifiez <em><strong>pas</strong></em> la valeur de <code>SomeCol</code>, alors elle prendra la valeur par défaut <code>0</code>.</p>
<p>Si vous insérez un enregistrement <em><strong>et</strong></em> que vous spécifiez la valeur de <code>SomeCol</code> comme <code>NULL</code> (et que votre colonne autorise les nulls),</p>
<pre><code>alors la contrainte par défaut ne sera pas utilisée et NULL sera inséré comme valeur.
</code></pre>
<p>Les remarques ont été basées sur les excellents retours de chacun ci-dessous.</p>
<p>Remerciements spéciaux à :</p>
<pre><code>@Yatrix, @WalterStabosz, @YahooSerious et @StackMan pour leurs commentaires.
</code></pre>