2010-11-03 17 views
0

Hey, je suis habitué à ORM donc j'ai une énorme absence de l'expérience sql. Je veux savoir quelle est la meilleure façon d'insérer une ligne dans une table, c'est-à-dire dans une relation plusieurs-à-plusieurs avec une autre table, et insérer une ligne de deux clés étrangères dans la table de liaison particulière pour conserver intégrité des données.Ligne SQL insérer dans une table + clés dans sa table de liaison dans une déclaration (relation plusieurs-à-plusieurs)

Si quelqu'un utilise spring jdbcTemplate, je voudrais également savoir s'il a un support pour cette tâche. Merci à l'avance

Répondre

1

qui est généralement ce que les procédures stockées sont utilisées pour, par exemple, quelque chose comme

CREATE PROC MyInsertM2M(@fieldname1 int, @fieldname2 varchar(20), @Key1 int, @Key2 int etc) 
AS 
BEGIN 

INSERT INTO MyMainTable(fieldname1, fieldname2...) 
VALUES(@fieldname1, @fieldname2...) 

INSERT INTO MyResolverTable(KeyField1, Keyfield2) 
VALUES (@Key1, Key2) 

END 

(en supposant sql server)

Ensuite, Google BEGIN TRAN, COMMIT TRAN et ROLLBACK.

+0

SteveCav, merci pour la réponse, mais je voudrais vraiment savoir comment cela se fait sans eux, je n'aime pas beaucoup les procédures stockées. Je préfère avoir tout sur le côté de l'application, laisser la base de données en dehors de cela – lisak

+0

Votre question implique l'utilisation de SQL. Si vous êtes habitué à ORM, ne l'avez-vous pas utilisé dans une transaction? – SteveCav

+0

Sans parler d'ORM, j'ai simplement créé deux instructions sql dans une transaction. Je suis un programmeur Java et le pilote JDBC n'autorise pas la concaténation de deux requêtes DB. Donc, il en résulte comme 20 lignes de code juste pour insérer une ligne dans une table qui est dans many2many rel. avec une autre table. C'est pourquoi je me demande s'il existe un moyen de le faire dans une requête/requête SQL. – lisak