Mysql clé primaire lors de l'utilisation de l'INSÉRER DANS ... SUR le DOUBLE de la CLÉ de mise à JOUR
Ma structure de la table est:
CREATE TABLE IF NOT EXISTS `users_settings_temp` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`userid` int(10) unsigned DEFAULT NULL,
`type` enum('type1','type2')
`data` text,
`date_created` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Ce que je suis en train de faire est:
Disons que je veux insérer une nouvelle entrée, mais je ne veux pas qu'il soit en double, après autour de google, j'ai trouvé ce format:
INSERT INTO users_settings_temp(...)
ON DUPLICATE KEY UPDATE data = '{$data}'
Je crois que le problème est dans ma table, la clé primaire => id
. Comment puis-je modifier la table, pour que je puisse utiliser l':
INSERT INTO ... ON DUPLICATE KEY UPDATE
Puis-je utiliser user_id + type de clé primaire? Si oui, pourriez-vous s'il vous plaît me montrer comment faire?
- Exactement ce que vous voulez vous produire sur un duplicata? Jeter? Modifier les données de quelque chose?
- Désolé de ne pas spécifiques. Je veux mettre à Jour lors de son double. Je vais mettre à jour ma question peu de temps.
Vous devez vous connecter pour publier un commentaire.
Lorsque vous faites comme cela, alors
a) en spécifiant l'id d'œuvres
b) des cours de clé primaire est unique
c) laisser la base de données de tirer une nouvelle id œuvres
mais augmentera toujours
NOTES:
Vous devriez penser si votre
id
devrait toujours être de type autoincrement ou pas.Aussi, ne peut pas penser à une raison pourquoi
date_created
devrait êtreint(11)
au lieu dedatetime