Description du statut
J'ai deux bases de données, DB1
和 DB2
,它们具有相同的表 Author
,其中字段为 Author.ID
和 Author.AuthorName
.
Author.ID
de DB1.Author
DB1.Author
的 Author.ID
字段有 AUTO_INCRMENT,而 DB2.Author
没有 AUTO_INCRMENT,因为它依赖于 DB1
a
DB2.Author
n'a pas Author.ID
上的 PRIMARY 索引和 Author.AuthorName
AUTO_INCRMENT car cela dépend de Exactitude des données DB1
.
Les deux tables ont des index uniques sur DB2.Author
具有从 DB1.Author
.
Lignes copiées.
Les deux bases de données utilisentversion 10.6.7.
QuestionDB1
管理员删除了 DB1.Author
ID | |
---|---|
1 | |
2 | |
3 |
AuthorName
为 'B'
ID | |
---|---|
1 | |
3 |
ID | |
---|---|
1 | |
2 |
DB1.Author
复制到 DB2.Author
而不删除 DB2.Author
表中的所有内容,这样我就不会'不会丢失 CASCADE
Maintenant, je dois trouver un moyen de copier le statut mis à jour d'une ligne de DB1.Author
vers DB2.Author
DB2.Author
Tout dans le tableau CASCADE
. Quelle est la meilleure façon ?
ID
2 会尝试插入 'C'
的重复值,因为它ID
Mes clichés
C'est ce que j'ai fait, mais ça ne marche évidemment pas car en cas de clé en double il essaie de créer une autre clé en double (le doublon existe déjà sur 3) :
INSERT INTO DB2.Author (ID, AuthorName) SELECT DB1.Author.ID, DB1.Author.AuthorName FROM DB1.Author ON DUPLICATE KEY UPDATE ID = DB1.Author.ID, AuthorName = DB1.Author.AuthorName;Autres méthodes ? 🎜🎜 🎜Outre la solution de requête SQL possible, existe-t-il un autre moyen de mettre à jour automatiquement les données des tables dans une base de données lorsque les données sont modifiées dans une autre base de données ? Seules certaines tables doivent être copiées, pas d'autres tables liées. 🎜
TL;DR, votre problème est votre gestionnaire de base de données. La solution est pour lui de réparer les dégâts causés en restaurant les données à leur état antérieur. Supprimez simplement la ligne. La mise à jour de la clé primaire ne fonctionne jamais.
Ne travaillez pas sur son erreur pour créer une solution ou la valider, car cela augmenterait les chances qu'elle se reproduise.
Réponse complète.
Votre problème actuel est votre « administrateur de base de données » qui enfreint une règle cardinale des bases de données : Ne mettez jamais à jour les valeurs des clés de substitution !
Dans votre cas, la situation est encore plus tragique car les écarts dans les valeurs de la colonne ID n'ont de toute façon pas d'importance. Si l’écart est important, votre situation est encore pire. S'il vous plaît, permettez-moi de vous expliquer...
Le nom de l'auteur est votre actuelidentifiant. Nous le savons car il a une contrainte unique.
La colonneID est une clé de substitution, implémentée de manière plus pratique sous la forme d'un entier à incrémentation automatique, mais les clés de substitution fonctionneront également correctement si la clé de substitution est un nombre aléatoire (unique). L'écart, ou même le choix de la valeur elle-même, n'a rien à voir avec la validité de la clé de substitution.