SQL: Insérer des données à partir d'une autre table dans une table qui contient les clés étrangères

Dans une BASE de données SQL

J'ai une Table Utilisateurs

 Id   Name   Age    AddressId
----+------+------+-----------

Où AddressId est une clé étrangère d'une table des noms Adresses

La Table Des Adresses:

 Id   Country   State  City   ZipCode
----+---------+------+------+---------

C'est un ONE-to-ONE Relation: Chaque Utilisateur Dispose de 1 adresse et a chaque adresse d'un utilisateur

J'ai une nouvelle table nommée NEWUsers

Id   Name  
----+------

Il a seulement le Nom et l'Identifiant.

Ce que je veux faire, c'est ceci:

Écrire un script pour insérer tous les enregistrements De la NEWUSers Table dans la Table des Utilisateurs.

  • Je veux L'Âge à la valeur par défaut de 20 pour tous les nouveaux utilisateurs
  • Et pour chaque nouvel utilisateur inséré j'ai besoin de créer un nouvel enregistrement d'Adresse pour lui
  • la nouvelle Adresse ont tous des valeurs (pays, ville, état, code postal) égal à "abcd" à l'exception de l'Identifiant qui sera utilisé pour définir la clé étrangère AddressId pour le nouvel utilisateur)

Comment puis-je le faire?

J'ai essayé le suivant:

INSERT INTO Users(Name, Age)
Values((SELECT Name FROM NewUsers),20)

Mais je ne sais pas comment créer une nouvelle Adresse d'enregistrement pour chaque utilisateur inséré et spécifier la clé étrangère en conséquence.

Merci beaucoup pour toute aide

est le Adresses.Id un IDENTITY ?
pour créer une nouvelle adresse lorsque vous insérez de nouvelles User vous devez décider de créer trigger qui sera exécuter après l'insertion d'un nouvel Utilisateur.
oui, c'est l'Identité

OriginalL'auteur Youssef | 2012-05-24