web-dev-qa-db-fra.com

Comment créer une table basée sur une autre table

Je veux créer une table basée sur la définition d'une autre table.

Je viens d'Oracle et je ferais normalement ceci:

 CREATE TABLE schema.newtable AS SELECT * FROM schema.oldtable;

Je n'arrive pas à faire cela dans SQL Server 2008.

27
oliverdejohnson

Une telle syntaxe n'existe pas dans SQL Server, bien que CREATE TABLE AS ... SELECT existe dans PDW. Dans SQL Server, vous pouvez utiliser cette requête pour créer une table vide:

SELECT * INTO schema.newtable FROM schema.oldtable WHERE 1 = 0;

(Si vous voulez faire une copie de la table y compris toutes les données, laissez de côté la clause WHERE.)

Notez que cela crée la même structure de colonne (y compris une colonne IDENTITY s'il en existe une) mais ne copie aucun index, contrainte, déclencheur, etc.

77
Aaron Bertrand
select * into newtable from oldtable
17
Sonam