SQL Insert avec des données provenant de plusieurs tables

J'ai quatre tableaux: les Messages, MessageCategory, MessageStatus et MessageLevel.

MessageCategory, MessageStatus et MessageLevel tout juste trois domaines: Identité (clé primaire), le Code et la Description. Les Messages se réfère à ces trois domaines et a quelques autres champs de données, y compris l'Identité (clé primaire) MessageText et de l'Ordre. L'Identité champs auto-incrémentés champs.

J'ai maintenant besoin d'écrire un script SQL pour ajouter des données par défaut à tous les quatre tableaux. Le problème c'est que je dois créer un script qui sera envoyé à un client, qui pourra ensuite exécuter ce script. Je ne peux pas écrire un peu plus intelligente de code à faire la mise à jour. Et tandis que les trois tableaux sont de simples instructions insert, c'est la table des Messages qui me cause quelques autres maux de tête.

Je ne peut pas supprimer les indices et je ne peut pas supposer qu'il commence à compter à 1 pour les clés primaires.

Alors, comme un exemple, avec ses quelques données:

INSERT INTO MessageCategory (Code) Values ('Cat01');
INSERT INTO MessageStatus (Code) Values ('Status01');
INSERT INTO MessageLevel (Code) Values ('Level01');

Et les messages aurait besoin de quelque chose comme ceci:

INSERT INTO Messages(Category, Status, Level, MessageText, Order) 
VALUES(
  (SELECT Identity from MessageCategory where Code='Cat01'), 
  (SELECT Identity from MessageStatus where Code='Status01'), 
  (SELECT Identity from MessageLevel where Code='Level01'), 
  'Just some message', 
  1
);

Qui ne fonctionnent pas, bien. Alors, quelle est l'astuce pour le faire fonctionner? (En gardant le code lisible trop...)

Malheureusement, je n'ai pas accès à l'autre de la base de données. Je peux le tester, mais une fois qu'il semble fonctionner, c'est juste une question de envoyer-et-prier-il-d'œuvres...

OriginalL'auteur Wim ten Brink | 2009-10-19