Comment puis-je avoir une clé primaire dans une VUE (une clé ne dépend pas de la source de tables)
Je suis la création d'un AFFICHAGE sur 3 TABLES. Chaque TABLE a sa clé primaire. Cependant, du point de VUE afin d'avoir une clé primaire, je vais devoir utiliser une clé primaire composite (combinaison de clés primaires des 3 TABLES).
Je tiens cependant à ajouter une colonne dans la VUE comme une clé primaire qui est créé juste pour le but de la VUE. Dans le cadre de la définition de la VUE, elle doit être UNIQUE(autoincrement, puisqu'il serait surtout un INT). Comment puis-je y parvenir?
Je suis de l'utilisation de MySQL 5.1
OriginalL'auteur Kabeer | 2009-12-28
Vous devez vous connecter pour publier un commentaire.
vous pouvez utiliser différentes méthodes pour insérer un ID unique à la vue de données, tels que:
Cependant, c'est pas une clé primaire, il n'est pas consistante et va changer lorsque les modifications de données.
Qu'est-ce exactement avez-vous besoin d'une clé pour?
paul, si vous appliquez cela à vue, par exemple, il ne sera pas nécessairement vous donner
id
dans l'ordre. il vous donne un identifiant unique, mais pas dans l'ordre. une solution assez simple est de créer une table temporaire (via un insert à partir d'une vue, par exemple) qui dispose d'un champ numéroauto. il aurait la force de recréer la table chaque fois que vos données ont changé, mais qui pourrait être facilement accompli en php ou java.Comme David Clifton dit que vous ne pouvez pas créer une vue avec
SELECT @rownum:=@rownum+1 as id, mytable.* FROM (SELECT @rownum:=0) r, mytable;
Vous désirez obtenir un1351
erreurOriginalL'auteur Paul Creasey
Le plus voté réponse à l'aide de
Est incorrect - vous ne pouvez pas créer une vue dans mysql qui utilise un sous-sélectionnez dans la à PARTIR. Vous êtes à la seule option est de traiter un ensemble de colonnes d'une clé composite.
Vous ne pouvez même pas utiliser des variables dans une sélection qui permettra de créer une vue. D'accord, la solution est une clé composite.
OriginalL'auteur David Clifton
Points de vue n'ont pas de clé primaire ou indices, le moteur mysql va utiliser les index et les clés définis sur la table de base(s).
OriginalL'auteur mopoke
Vue est juste un stockée sous-requête. L'idée d'un PK n'est pas pertinent.
...sauf si vous avez besoin d'une vue indexée, dans ce cas vous avez besoin d'un Index Cluster sur la vue (mais pas encore nécessairement une Clé Primaire)
(bien que, je parle de SQL Server... je ne suis pas sûr de savoir comment cela se traduit par MySQL)
OriginalL'auteur Rob Farley