J'utilise Oracle SQL. Il y a une séquence et un déclencheur utilisés pour l'identifiant qui s'incrémente de 1 chaque fois qu'un nouvel enregistrement est ajouté dans la table. Cependant, si tous les enregistrements sont supprimés et que de nouveaux enregistrements sont ajoutés à cette table, l'identifiant ne commence pas à partir de 1 alors qu'il commence à partir du dernier nombre maximum d'enregistrements enregistrés dans la séquence.Comment réinitialiser la séquence si la table est vide?
Il y a donc un moyen dans l'instruction TRIGGER dans lequel je peux réinitialiser la séquence si la table est vide et que de nouveaux enregistrements sont importés.
OU dois-je procéder de manière stockée_procédure, si c'est alors comment puis-je appeler cela en utilisant myBatis mapper?
Table (customer_info)
customer_id customer_name customer_location
1 Arbin USA
2 Tim Canada
3 Rachel Australia
Séquence
CREATE sequence customer_id_seq START WITH 1 INCREMENT BY 1 NOCACHE NOCYCLE;
Trigger
CREATE OR REPLACE TRIGGER customer_id
BEFORE INSERT ON customer_info
FOR EACH ROW
BEGIN
SELECT customer_id_seq.NEXTVAL
INTO :new.customer_id
FROM dual;
END;
/
Merci.
Qu'y a-t-il de mal à ne pas utiliser un champ d'auto-incrémentation dans ce cas le customer_id_seq? reset back devrait être juste TRUNCATE table –
maSTAShuFu
@maSTAShuFu C'est Oracle pas le serveur SQL et pas une colonne d'identité. –
Avoir du sens ... ne m'attendais pas à ce que – maSTAShuFu