2010-09-09 5 views
1

J'ai une base de données Class_Books qui relie les ISBN (de la table Books) aux Class_ID (de la table Classes). Je suis en train de changer ma table Books, donc la clé primaire est un Book_ID (autoincrement INT) au lieu de l'ISBN. Existe-t-il un moyen de mettre à jour Class_Books afin qu'il utilise Book_ID maintenant?Création d'une nouvelle table plusieurs-à-plusieurs

Répondre

1

MySQL supporte une syntaxe UPDATE multi-tables qui facilite grandement ce type de travail.

ALTER TABLE Class_Books ADD COLUMNS Book_Id INT; -- nullable 

UPDATE Books b JOIN Class_Books cb ON b.ISBN = cb.ISBN 
SET cb.Book_Id = b.Book_Id; 

Ensuite, vous pouvez utiliser ALTER TABLE pour modifier les contraintes, faire cb.Book_Id NOT NULL, et déposer cb.ISBN.

PS: Je recommande d'appeler Class_Books une table beaucoup à plusieurs ou une intersection tableau. Le mot relation signifie quelque chose de différent dans la théorie relationnelle, et cela n'a rien à voir avec les relations entre les tables.

+0

Est-ce la même chose qu'une table * association *? Ou est-ce que je pense à autre chose? – mlschechter

+0

@mlschechter: Cela me semble être un synonyme –

+0

Bien sûr, ne l'appelez pas une * table de relations *, car cela équivaudrait à dire que vous utilisez un * nombre entier *. Sorte de vrai d'une certaine façon, mais cela semble maladroit et redondant. –

Questions connexes