2010-02-09 7 views
1

J'essaie d'insérer des enregistrements sur plusieurs tables mysql avec des entités similaires (une table normalisée) J'ai essayé de le faire mais j'ai une erreur. J'ai également vu des jointures mais cela ne semble fonctionner que lors de la récupération de données.comment insérer des enregistrements dans 2 tables mysql

 insert into t1(pnum, hospnum) values('117', '656') 
     insert into t2(TELNUM, HOSPNUM) values('9981235', '676') 
+0

Comment essayez-vous de faire ces insertions? En supposant des données valides, il ne semble pas y avoir de problème. Si c'est via une interface comme les fonctions mysql de PHP, ils ne supportent pas plusieurs instructions dans une seule transaction iirc. –

+0

Quelle est l'erreur? – wallyk

+1

* "Je reçois une erreur" * Chaque fois que vous écrivez cette phrase lorsque vous demandez de l'aide sur un site de discussion ou un forum de discussion, retournez huit fois et changez-le en "J'ai * cette * erreur: ______" –

Répondre

0

je soupçonne que vos champs sont des nombres et non des chaînes, essayez ceci:

insert into t1(pnum, hospnum) values(117, 656) 
insert into t2(TELNUM, HOSPNUM) values(9981235, 676) 

Pas besoin d'utiliser des guillemets pour les numéros sinon vous obtiendrez une erreur.

+0

MySQL va implicitement convertir chaînes à int/etc basé sur le type de données de la colonne impliquée. –

+0

@OMG: Ceci est quelque chose que je n'ai pas vu si je mets des citations pour les nombres dans la valeur, je suis lié à voir les erreurs. Essaye le. – Sarfraz

+0

'insérer dans les valeurs t1 (pnum, hospnum) ('117', '656')' fonctionne pour MySQL 4.1, les deux colonnes sont INTEGER. Confirmé avec DECIMAL aussi. Dois-je continuer? –

1

Si vous exécutez ces déclarations dans un lot, vous pouvez avoir besoin d'un point-virgule pour séparer/mettre fin à leur:

insert into t1(pnum, hospnum) values(117, 656); 
insert into t2(TELNUM, HOSPNUM) values(9981235, 676); 
0

MySQL ne supporte pas une déclaration qui insère dans deux tables différentes.

La seule option est d'utiliser un déclencheur sur t1 qui insère à t2, mais bien sûr vous n'avez pas accès à la valeur telnum dans un déclencheur; vous avez seulement les colonnes de t1. Donc, cela ne fonctionnera pas dans votre situation.

Vous devez exécuter les deux insertions sous la forme d'instructions SQL distinctes.

Questions connexes