Comment auto INCREMENT dans db2?

je pensais que ce serait simple, mais je ne peux pas semble-t-il utiliser AUTO_ incrément dans ma base de données db2. J'ai fait quelques recherches et les gens semblent utiliser "Generated by Default", mais cela ne fonctionne pas pour moi.

si cela aide, voici la table que je veux créer avec le sid étant auto incrémenté.

  create table student(
      sid integer NOT NULL <auto increment?>
      sname varchar(30),
      PRIMARY KEY (sid)
      );

Tous les pointeurs sont appréciés.

28
demandé sur Matt 2012-11-20 07:51:02

4 réponses

Vous êtes à la recherche est appelé une colonne d'IDENTITÉ:

create table student (
   sid integer not null GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1)
  ,sname varchar(30)
  ,PRIMARY KEY (sid)
);

Une séquence est une autre option pour le faire, mais vous devez vous déterminez laquelle est la bonne pour votre situation particulière. Lire ceci pour plus d'information comparer les séquences d'identité colonnes.

47
répondu Ian Bjorhovde 2012-11-20 23:04:37

vous devrez créer un champ auto-increment avec l'objet sequence (cet objet génère une séquence de nombres).

utilisez la syntaxe suivante:

  CREATE SEQUENCE seq_person
  MINVALUE 1
  START WITH 1
  INCREMENT BY 1
  CACHE 10

le code ci-dessus crée un objet de séquence appelé seq_person, qui commence par 1 et augmentera de 1. Il cache également jusqu'à 10 valeurs pour la performance. L'option cache spécifie combien de valeurs séquentielles seront stockées en mémoire pour un accès plus rapide.

pour insérer un nouveau enregistrez dans la table" personnes", nous devrons utiliser la fonction nextval (cette fonction récupère la valeur suivante de la séquence seq_person):

  INSERT INTO Persons (P_Id,FirstName,LastName)
  VALUES (seq_person.nextval,'Lars','Monsen')

L'énoncé SQL ci-dessus insérerait un nouvel enregistrement dans la table "personnes". La colonne" P_Id " se verrait attribuer le numéro suivant de la séquence seq_person. La colonne " FirstName "serait définie à" Lars "et la colonne" LastName "à"Monsen".

5
répondu Matt 2014-02-14 15:56:17

salut Si vous n'êtes toujours pas en mesure de faire la colonne comme AUTO_ incrément tout en créant la table. Comme un travail autour de la première table de création qui est:

create table étudiant( sid entier non nul sname varchar (30), CLÉ PRIMAIRE (sid) );

et ensuite essayer explicitement de modifier la colonne bu en utilisant le

alter table student alter column sid set GENERATED BY DEFAULT AS Identité

Ou

alter table student alter column sid set GENERATED BY DEFAULT Comme identité (commencer par 100)

1
répondu Mohd Arshil 2014-08-14 12:20:51

ajout de quelques paramètres optionnels pour la création de séquences" future safe".

CREATE SEQUENCE <NAME>
  START WITH 1
  INCREMENT BY 1
  NO MAXVALUE
  NO CYCLE
  CACHE 10;
1
répondu noname 2015-03-27 00:43:37