Clé primaire et Index Unique — scripts sql généré par SQL Developer
Lors de l'exportation des scripts sql en SQL Developer, il existe plusieurs options disponibles, mais de toute façon, il faut générer un UNIQUE INDEX
sur la clé primaire comme ce
CREATE UNIQUE INDEX "SYS_C0018099" ON "TRANSACTION" ("ID")
et ajouter PRIMARY KEY
à la même table et la même colonne
ALTER TABLE "TRANSACTION" ADD PRIMARY KEY ("ID")
La question est donc: est-ce qu'il ressemble type de redondance? J'ai pensé créer une clé primaire sur une colonne par défaut créer un index unique sur la colonne de trop? Alors, pourquoi la première commande est-elle nécessaire?
Et cela peut causer de la redondance des données?
Je suis sur Oracle 11g merci donc de partager des idées sur pourquoi il devrait ressembler à ci-dessus.
Merci d'avance.
OriginalL'auteur Dreamer | 2012-11-05
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas de redondance ou seulement un petit peu 🙂
La deuxième commande de l'index disponible s'il existe. Sinon(si le premier DDL n'existe pas) va créer un index.
La scission en deux commandes est utile lorsque vous avait donné un nom propre à l'index et veulent le garder.
Mise à JOUR: Le lien indiqué par Thomas Haratyk est à lire absolument, je l'aime vraiment: http://viralpatel.net/blogs/understanding-primary-keypk-constraint-in-oracle/
UPDATE2: a_horse_with_no_name est droit, il peut être réalisé en une seule instruction comme:
Donc, il gardera le nom(à ne pas créer un sysblalbla nom de l'objet) et si vous utilisez l'AIDE de l'INDICE de mot-clé, vous pouvez spécifier l'index de ses attributs, par exemple le stockage attributs.
Mais encore une fois, vous n'aurez pas de problèmes avec ces deux déclarations, seulement un index est créé.
Probablement SQL Developer préfèrent pour obtenir un ddl par objet et il pourrait y avoir des cas où c'est mieux de faire son chemin.
Merci pour l'intel. @a_horse_with_no_name pourriez-vous veuillez donner une instruction unique comme une combinaison des deux
with an index name
? Je veux dire, peut-on spécifier un nom d'index à l'intérieur deALTER TABLE
commande lors de la création de la clé primaire? Mercitable foo add constraint pk_foo primary key (id) va créer une contrainte nommée
PK_FOO
et un index avec le même nom. Vous pouvez définir l'index séparément si vous le souhaitez:alter table foo add constraint pk_foo primary key (id) using index (create index pk_index_for_foo on foo(id));
Thumbs up pour ce beau commentaire! Merci a_horse_with_no_name 😉
Aussi je vous remercie Florin Ghita pour les mises à jour 🙂
OriginalL'auteur Florin Ghita