J'ai deux tables appelées VisitorMaster
et SupportVisitor
. In VisitorMaster
J'ai une colonne appelée VisitorID1
qui est une clé primaire (mais pas une colonne d'identité). Dans SupportVisitor
J'ai une colonne appelée VisitorID2
qui agit comme une clé étrangère pour la table VisitorMaser
.Mais mon exigence est que je veux que la dernière valeur de colonne générée de VisitorID1
soit insérée dans VisitorID2
du tableau SupportVisitor
. Comment y parvenir .. S'il vous plaît Help ??Affectation de la valeur de colonne de clé primaire à la colonne de clé étrangère
Répondre
Après avoir inséré un enregistrement dans une table avec une identité-colonne, vous pouvez récupérer ces lignes identité numérique en sélectionnant l'identité de portée:
INSERT INTO VisitorMaster (Name) VALUES ('Jane doe')
SELECT SCOPE_IDENTITY() -- Will retrieve ID for Jane Doe
Je pense votre meilleur pari serait de faire en sorte que vous enveloppez votre INSERT
dans le tableau VisitorMaster
avec une transaction et que, dans la transaction, vous obtenez la valeur VisitorID
en utilisant les données que vous avez insérées pour l'interroger et enfin en la mettant dans SupportVisitor
avant de valider ou d'annuler le lot.
Vous pouvez utiliser un déclencheur pour faire cela, mais les déclencheurs sont des choses désagréables qui peuvent avoir toutes sortes de conséquences inattendues puisque le fonctionnement est plus ou moins invisible, donc je les évite.
En fin de compte, je voudrais savoir pourquoi avez-vous un PK de substitution non-identité dans une colonne? C'est un assez mauvais design. Soit utiliser une clé naturelle (combinaison de prénom, nom, horodatage ou tout ce qui fait une clé naturelle unique) ou utiliser un champ d'identité auto-incrémenté comme PK de substitution (après quoi peut utiliser SCOPE_IDENTITY
) car sinon votre clé est assez fragile et pas garanti d'être unique. Comment générez-vous cette valeur? Est-ce qu'il est tenu dans un tableau séparé (j'ai su que certaines bases de données utilisent ce type de système, en particulier les bases de données EAV, et ce n'est pas un bon système et n'est pas plus facile à gérer que des valeurs arbitraires)? Si vous avez une quelconque influence sur ce design, alors vous devriez le changer parce que cela sent et est susceptible de vous causer beaucoup, BEAUCOUP plus de problèmes à l'avenir.
merci Steve.En fait j'ai créé une procédure de magasin appelée 'USPGETMAXID' et l'ai exécutée sur la table 'VisitorMaster' pour incrémenter la valeur de la colonne 'VisitorID1' de 1 pour chaque fois que l'utilisateur saisit quelque chose sur la table. 'VisitorID1' une 'Colonne d'Identité' ou je peux y arriver grâce à ma procédure .. s'il vous plaît aidez-moi? – Nitesh
A moins que vous n'ayez vraiment besoin de l'éviter, alors je ferais certainement de la colonne une colonne d'identité. Cela signifie que vous n'avez pas besoin d'avoir le SP et que vous n'avez donc pas besoin de le maintenir. Les clés naturelles et substitutives ont leur place mais elles devraient toutes être utilisées au mieux et en fonction de ce que nous savons de votre question. Je dirais qu'un champ d'identité est ce que vous recherchez ici pour un minimum d'effort et une facilité d'utilisation maximale. –
Merci beaucoup très steve. – Nitesh
- 1. Insérer la valeur de la colonne de clé primaire dans la colonne de clé Non primaire
- 2. mettre la valeur de la clé étrangère de clé primaire
- 3. insert 2 clé primaire de la colonne
- 4. Affectation Chaque clé primaire sa propre colonne
- 5. Rejoindre 2 colonnes de clé primaire à 1 colonne de clé étrangère dans la même table
- 6. Contrainte de clé étrangère MySQL - Colonne entière
- 7. Cartographie clé étrangère à la colonne clé de substitution non primaire dans le code EF premier
- 8. Comment ajouter des valeurs de la colonne de clé primaire dans la colonne clé étrangère d'une autre table
- 9. SubSonic Clé primaire de colonne multiple
- 10. Spring Roo, Hibernate génère une clé étrangère inutile pour la colonne de clé primaire
- 11. sélectionnez une colonne dans la clé étrangère
- 12. Hibernate nom différent de la colonne de clé étrangère
- 13. Comment ajouter/mettre à jour/remplir automatiquement une colonne de clé étrangère avec les valeurs de la colonne clé pirmary?
- 14. Problème de colonne de clé étrangère
- 15. Obtient la clé primaire et la contrainte de clé étrangère
- 16. Nom de colonne de clé étrangère JPA
- 17. Modifier la clé étrangère de la colonne de table?
- 18. place resequence d'une colonne de clé primaire
- 19. Comment référencer une colonne de clé étrangère avec plusieurs colonnes de clé primaire
- 20. Clé étrangère vers la clé primaire composite
- 21. La suppression de données de clé étrangère doit afficher une erreur pour la clé primaire
- 22. Comment créer une clé primaire combinant à la fois une clé étrangère et une colonne
- 23. Mise à jour de la colonne clé étrangère
- 24. besoin d'aide dans la clé primaire et la clé étrangère
- 25. Création d'une colonne de clé étrangère
- 26. Fusion DataTable sans colonne de clé primaire
- 27. Ajout de la clé primaire change le type de colonne
- 28. Clé primaire VS clé étrangère
- 29. Clé primaire/clé étrangère de base avec contrainte, séquence, déclencheur
- 30. Clé primaire sur une colonne
-1 Cela ne fonctionnera pas: L'OP a spécifiquement déclaré que 'VisitorID1' n'est PAS une colonne d'identité et donc SCOPE_IDENTITY ne renverra pas sa valeur, et le' INSERT' ne l'incrémentera en aucune façon. Cette réponse est inutile et ne se rapporte pas à la question. –
Ah touche, mauvaise lecture de ma part. – Elken
Merci Elken..My colonne 'VisitorID1' n'est pas une colonne d'identité .. est-il un moyen de sortir pour cela ..ou je suis lié pour en faire une colonne d'identité. – Nitesh