Je sais que mon titre n'est pas très bien libellé, alors laissez-moi clarifier. J'utilise SQL Server 2005 Express.Comment puis-je copier tous les champs d'une table vers une autre table plus large dans SQL Server 2005 Express?
J'ai une table qui stocke essentiellement un "modèle", si vous voulez. L'utilisation d'une voiture comme un exemple, les champs seraient quelque chose comme:
TemplateID
Color
Make
Model
Maintenant, j'ai une autre table qui représente une « instance » du modèle. Il contient tous les champs de la table de modèle ainsi que quelques champs qui sont uniques à une instance:
InstanceID
VIN
SerialNumber
Color
Make
Model
Je vous écris une procédure stockée pour insérer une nouvelle ligne dans la table « instance ». Cette procédure stockée prendra des paramètres d'entrée pour "VIN" et "SerialNumber", mais je veux copier "Color", "Make" et "Model" à partir du "Template" approprié. Le modèle est localisé par le "TemplateID", qui est déjà connu.
Je cherche des conseils sur la façon d'écrire cette procédure stockée. Il serait simple s'il n'y avait pas le fait que ces tables contiennent plus de 100 champs (je ne les ai pas la conception, mais je suis coincé à les utiliser.) Je voudrais faire quelque chose comme:
INSERT INTO Instance(VIN, SerialNumber, "EverythingElse")
VALUES (@VIN, @SerialNumber, SELECT * FROM Template WHERE TemplateID = 1)
En d'autres termes, je veux seulement fournir (par des paramètres) les champs non stockés dans le "Modèle" et copier tout le reste du modèle. Est-ce que quelque chose comme ça est possible sans codage manuel pour tous les domaines?
Le seul problème avec cela est que j'aurais 100+ noms de champs (a, b, c, .......) . J'essaie d'éviter de créer une requête super longue comme ça. Je me rends compte que ce n'est peut-être pas possible, mais je pensais que je demanderais de voir s'il y avait un meilleur moyen. –
Voir mon autre réponse. – ctrlShiftBryan
POURQUOI objecteriez-vous à 100 noms de colonnes? Si c'est waht Itis, c'est ce que Itisi. Personnellement, je les fais glisser de l'objet oexporer quand j'écris d = code, mais c'est juste moi. C'est une solution meilleure que celle dynamique ci-dessus. – HLGEM