La raison pour laquelle vous avez inséré la WHERE 1=2
clause dans cette SELECT INTO
requête est la création d'une copie de champ de la table existante sans données .
Si vous avez fait ceci:
select *
into Table2
from Table1
Table2
serait une copie exacte de Table1
, y compris les lignes de données. Mais si vous ne voulez pas que les données soient contenues Table1
, et que vous voulez juste la structure de la table, vous mettez une WHERE
clause pour filtrer toutes les données.
BOL SELECT INTO
Référence citation:
SELECT… INTO crée une nouvelle table dans le groupe de fichiers par défaut et y insère les lignes résultantes de la requête.
Si votre WHERE
clause n'a pas de lignes résultantes, aucune ne sera insérée dans la nouvelle table: vous vous retrouvez donc avec le schéma en double de la table d'origine sans données (ce qui serait le résultat souhaité dans ce cas).
Le même effet peut être obtenu avec TOP (0)
, par exemple:
select top (0) *
into Table2
from Table1;
Remarque : SELECT INTO
Cela ne dupliquera pas les index, contraintes, déclencheurs ou schéma de partition de la table source.
Thomas Stringer
la source