0
votes

Comment insérer une requête dans SQLite avec une valeur autocramentale pour chaque ligne

Supposons que je insère le querySet suivant dans une nouvelle table en SQLite: xxx

est-il possible de:

  • Définissez le Rowid comme incrémentation automatique pk en SQLite de l'insert, ou;
  • Exclure le Rowid et avoir SQLite Auto-ajouter automatiquement dans une clé primaire autocramentative pour chaque enregistrement inséré.

    Comment cela serait-il fait?

    Actuellement, sans que je fais l'insert, le Rowid n'est pas indexé.


4 commentaires

Quel est le problème ici? Qu'essayez-vous de faire?


@LUDOVICFELTZ Do un insert qui a Rowid comme champ d'auto-interprétation. SQLITE.ORG/AUTOINC.HTML


Donc, ce champ auto-incrément ... pourquoi essayez-vous de définir une valeur?


Si vous créez la table d'abord, vous pouvez ajouter toutes les valeurs sauf Rowid , puis laissez-la incrémenter.


3 Réponses :


0
votes

Auo incrément devrait résoudre ceci. Documentation ici:

https://www.sqlite.org/autoinc.html

créer une table source: p> xxx pré>

Ajouter des données source: p>

insert into target select null, data from sourceTable


3 commentaires

S'il vous plaît pas de lien seulement ... Pouvez-vous poster une réponse avec du code? Je vais supprimer mon bowvote après avoir édité votre réponse ....


@Mark - Pourriez-vous montrer en SQL comment cela serait fait sur l'insert? Ou suggérez-vous d'exécuter une déclaration d'alter table après l'insertion?


Réponse modifiée pour la clarté avec l'exemple.



2
votes

Rowid code> est déjà là. Vous pouvez simplement faire: XXX PRE>

Vous le verrez si vous le ferez si vous le ferez: P>

SELECT rowid, t.*
FROM queryset_cache;


2 commentaires

Merci, SQLite ajoute-t-il automatiquement un champ auto-incrémentant (type de masqué) sur chaque table? J'étais sous l'impression que lors de la création de la nouvelle table, il utiliserait le Rowid de l'ancienne table, mais je suppose que je suis (heureusement) tort dans cela.


Ajouté automatiquement. Pas copié de la table d'origine.



0
votes

Si nous avons une table comme:

Créer un employé de table (Empid Enterger, Texte du nom, Texte d'adresse);

Insérer des données dans cette table.

Créer une table dans laquelle vous souhaitez insérer des données de la table des employés:

Créer une table NouveauMuployee (Texte primaire NouveauMempid Entier, Texte de nom, Texte d'adresses);

Copier les données sur la table NewMemploye:

Insérer dans le nouveauMemploye Select * à partir de l'employé

( Sélectionnez * à partir de l'employé ) pour copier toutes les colonnes


0 commentaires