2009-10-15 4 views
0

J'ai besoin d'insérer des données dans une base de données en utilisant une requête comme celle-ci:Quel est le meilleur moyen d'extraire des données d'une base de données avec une mise à jour si nécessaire?

INSERT INTO Table1 
    (aID) 
VALUES 
    (select aID from Table2 where aID="aID")) 

Le problème est que si Tableau2 ne pas l'aide-je besoin de le mettre à jour avec elle et extraire l'ID nouvellement créé. Y a-t-il une commande SQL qui le fait automatiquement?

+0

Quel SGBD et quelle version utilisez-vous? SQL Server 2008, Oracle, etc Si table2 n'a pas le aID, comment déterminez-vous quelle ligne mettre à jour? –

Répondre

2

Votre question est un peu partout sur la carte ... Le problème est que si Tableau2 ne pas l'aide que je dois le mettre à jour avec elle - Que signifient par là?

S'il n'existe pas, vous devez l'insérer ... droit?

Cela dit, vous devez écrire une procédure stockée pour atteindre votre objectif ... et aussi mettre « aid » ... pour être une tête de série auto-incrémental, identificateur colonne Type

Laissez-moi savoir si vous avez besoin d'élaboration

0

Vraisemblablement, vous avez plus de colonnes à ajouter dans la requête réelle, car cela n'a aucun sens pour le moment, vous avez juste une colonne dans le tout. En supposant que vous souhaitiez insérer d'autres colonnes de la table 2 dans la table 1, puis mettre à jour dans la table 2 le nouvel identifiant issu de la table 1, aucune commande ne le fera pour vous.

Quelque chose comme (dans SQL Server) DECLARE @newId int insérer dans table1 (.. colonnes ..) sélectionner les valeurs (..columns ..) de Tableau2 où aid = "aid") select @ newID = scope_identity() update table2 set foreign_key_column_to_table_1 = @ newId où aID = "aID"

Questions connexes