J'avais créé une nouvelle table nommée USERLOG avec deux champs d'une vue précédente. La table contient déjà environ 9 000 enregistrements. Les deux champs extraits de VIEW, c’est-à-dire que weblog_views se composent d’IP (se compose d’une adresse IP) et de WEB_LINK (se compose d’une URL). C'est le code que j'ai utilisé,
CREATE TABLE USERLOG
AS
SELECT C_IP, WEB_LINK FROM weblog_views;
Je souhaite ajouter une autre colonne à cette table appelée USER_ID, qui consiste en une séquence commençant par 1 à 9 000 enregistrements afin de créer un identifiant unique pour chaque ligne existante. J'ai besoin d'aide pour cette partie. J'utilise Oracle SQL Developer: ODMiner version 3.0.04. J'ai essayé d'utiliser l'option AUTO-INCREMENT,
ALTER TABLE USERLOG
ADD USER_ID INT UNSIGNED NOT NULL AUTO_INCREMENT;
Mais je reçois une erreur avec ça,
Error report:
SQL Error: ORA-01735: invalid ALTER TABLE option
01735. 00000 - "invalid ALTER TABLE option"
J'apprécierais donc vraiment toute aide que je pourrais obtenir!
Vous auriez besoin d'ajouter une colonne
ALTER TABLE userlog
ADD( user_id number );
créer une séquence
CREATE SEQUENCE user_id_seq
START WITH 1
INCREMENT BY 1
CACHE 20;
Mettre à jour les données dans la table
UPDATE userlog
SET user_id = user_id_seq.nextval
En supposant que vous souhaitiez que user_id
soit la clé primaire, vous ajouteriez ensuite la contrainte de clé primaire.
ALTER TABLE userlog
ADD CONSTRAINT pk_user_id PRIMARY KEY( user_id );
Si vous souhaitez utiliser la séquence pour ajouter automatiquement le user_id
lorsque vous faites un INSERT
(l'autre option consisterait à référencer spécifiquement user_id_seq.nextval
dans vos instructions INSERT
, vous aurez également besoin d'un déclencheur.
CREATE OR REPLACE TRIGGER trg_userlog_user_id
BEFORE INSERT ON userlog
FOR EACH ROW
BEGIN
:new.user_id := user_id_seq.nextval;
END;