J'ai une table MYSql avec les colonnes id, nom, description et statut. La colonne id est incrémentée automatiquement et est la clé primaire. Maintenant, je veux ajouter une autre colonne à la table nommée 'display_priority'. Je veux que les enregistrements soient extraits en utilisant «ordre par» sur cette colonne.
Comment puis-je remplir automatiquement cette table (en fonction de l'ID) lors de l'insertion d'enregistrements? Les valeurs display_priority n'ont pas d'importance lors de l'insertion. Il doit être réorganisé ultérieurement, à un moment donné, avant d'afficher les enregistrements. Mais les valeurs insérées doivent être uniques.
De l'aide? Merci d'avance.
Edit: Je sais que cela peut être fait par un déclencheur après insertion. Et si, je voulais éviter un déclencheur. Une autre façon?
3 réponses
Vous prenez l'id max de la table et ajoutez 1 comme prédiction d'id auto-incrémentée.
INSERT INTO `table_name` (col1, col2, col3)
SELECT val1, val2, max(id) + 1 AS val3 FROM `table_name`;
<!-- id is auto-incremented -->
Example
INSERT INTO `users` (name, email, display_priority)
SELECT 'Dave', 'dave@email.com', max(id) + 1 AS display_priority FROM `users`;
Vous pouvez ajouter une mise à jour de sorcière TRIGGER
le display_priority
lors de l'insertion et la valeur est le maximum
de display_priority
plus un.
CREATE TRIGGER table_name BEFORE INSERT ON display_priority
FOR EACH ROW SET @sum = (SELECT MAX(display_priority)+1 FROM table_name);
Si vous voulez éviter TRIGGER
, vous pouvez utiliser l'actuel UNIX_TIMESTAMP
ou CURRENT_TIMESTAMP
comme valeur par défaut. Mais si remorquer ou plus INSERT
à la même seconde vous avez un problème ...
display_priority TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
De nouvelles questions
mysql
MySQL est un système de gestion de base de données relationnelle (RDBMS) gratuit et open source qui utilise SQL (Structured Query Language). N'UTILISEZ PAS cette balise pour d'autres bases de données telles que SQL Server, SQLite, etc. Ce sont des bases de données différentes qui utilisent toutes leurs propres dialectes SQL pour gérer les données.