Comment définir une colonne pour qu'elle s'incrémente automatiquement avec Oracle SQL Developer? Pourquoi le formulaire est-il désactivé?
Remarque: L'image montre le modélisateur de données, mais la question et la réponse principale parlent de la modification d'une base de données existante.
Si vous souhaitez effectuer votre incrémentation automatique de la clé PK, vous devez définir la propriété de colonne ID pour cette clé primaire.
Voir l'image ci-dessous pour une meilleure compréhension.
// Ma source est: http://techatplay.wordpress.com/2013/11/22/Oracle-sql-developer-create-auto-incrementing-primary-key/
Malheureusement, Oracle ne supporte pas auto_increment comme le fait mysql. Vous devez faire un petit effort supplémentaire pour l'obtenir.
dites ceci est votre table -
CREATE TABLE MYTABLE (
ID NUMBER NOT NULL,
NAME VARCHAR2(100)
CONSTRAINT "PK1" PRIMARY KEY (ID)
);
Vous devrez créer une séquence -
CREATE SEQUENCE S_MYTABLE
START WITH 1
INCREMENT BY 1
CACHE 10;
et un déclencheur -
CREATE OR REPLACE TRIGGER T_MYTABLE_ID
BEFORE INSERT
ON MYTABLE
REFERENCING NEW AS NEW
FOR EACH ROW
BEGIN
if(:new.ID is null) then
SELECT S_MYTABLE.nextval
INTO :new.ID
FROM dual;
end if;
END;
/
ALTER TRIGGER "T_MYTABLE_ID" ENABLE;
Vous pouvez effectuer une incrémentation automatique dans SQL Modeler. Dans la fenêtre des propriétés de la colonne Cliquez sur: Général puis cochez la case Incrémentation automatique. Après cela, la fenêtre d’incrémentation automatique sera activée pour vous.
@ tom-studee vous aviez raison, il est possible de le faire dans le modélisateur de données.
Double-cliquez sur votre table, puis allez à la section des colonnes. Ici, double-cliquez sur la colonne qui aura l'incrémentation automatique. Dans la section générale, une case à cocher "auto-incrémentation" est cochée.
Après cela, vous pouvez également aller à la section "auto-incrémentation" pour le personnaliser.
Lorsque vous l'enregistrez et demandez au modélisateur de données de générer le script SQL, vous verrez la séquence et le déclencheur qui représentent votre auto-incrémentation.
[~ # ~] mise à jour [~ # ~] : À partir de Oracle 12c, nous avons la possibilité de créer un champ à incrémentation automatique, mieux que déclencheur et séquence. .
Voir l'image ci-dessous
À partir d'une instruction SQL
La colonne IDENTITY est maintenant disponible sur Oracle 12c:
create table t1 (
c1 NUMBER GENERATED by default on null as IDENTITY,
c2 VARCHAR2(10)
);
ou spécifier des valeurs de départ et d'incrémentation, empêchant également toute insertion dans la colonne d'identité (GENERATED ALWAYS) (à nouveau, Oracle 12c + uniquement)
create table t1 (
c1 NUMBER GENERATED ALWAYS as IDENTITY(START with 1 INCREMENT by 1),
c2 VARCHAR2(10)
);
[~ # ~] éditer [~ # ~] : si vous rencontrez une erreur telle que "ORA-30673: la colonne à modifier n'est pas une colonne d'identité ", vous devez alors créer une nouvelle colonne et supprimer l’ancienne.
Comment procéder avec Oracle SQL Developer: Dans le volet de gauche, sous les connexions, vous trouverez "Séquences", cliquez avec le bouton droit de la souris et sélectionnez "Créer une nouvelle séquence" dans la fenêtre contextuelle contextuelle. Complétez les détails: nom du schéma, nom_de_c séquence, propriétés (commencez par la valeur, valeur minimale, valeur maximale, valeur d'incrément, etc.) et cliquez sur ok. En supposant que vous ayez une table avec une clé qui utilise cet auto_increment, insérez-y simplement dans la table "your_sequence_name.nextval" dans le champ qui utilise cette propriété. Je suppose que cela devrait aider! :)
Oracle n'a pas de colonnes auto-incrémentées. Vous avez besoin d'une séquence et d'un déclencheur. Voici un article de blog au hasard qui explique comment le faire: http://www.lifftercoffee.com/2006/02/17/how-to-create-auto-increment-columns-in -Oracle/
J'ai trouvé cet article qui a l'air un peu vieux, mais je me suis dit que je mettrais à jour tout le monde avec mes nouvelles découvertes.
J'utilise Oracle SQL Developer 4.0.2.15 sous Windows. Notre base de données est Oracle 10g (version 10.2.0.1) fonctionnant sous Windows.
Pour créer une colonne auto-incrémentée dans Oracle -
Votre colonne id (clé primaire) sera désormais auto-incrémentée, mais la séquence commencera à 1. Si vous avez besoin d'incrémenter l'identifiant jusqu'à un certain point, vous devrez exécuter quelques instructions de remplacement sur la séquence.
This post a plus de détails et comment surmonter cela.
J'ai trouvé la solution ici