Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3116 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mysql Insert Replace et auto_increment sont dans un bateau

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mysql Insert Replace et auto_increment sont dans un bateau

n°1203170
Kytrix
Posté le 20-09-2005 à 12:03:52  profilanswer
 

Bonjour
 
voila j'ai une table :

CREATE TABLE `RateTable` (
  `RateID` int(4) unsigned NOT NULL auto_increment,
  `AreaCode` varchar(20) NOT NULL default '',
  `ReselerID` tinyint(4) NOT NULL default '0',
  `EffectUT` int(11) NOT NULL default '0',
  `AreaID` int(2) unsigned NOT NULL default '0',
  `AreaName` varchar(35) NOT NULL default '',
  `Price` float NOT NULL default '0',
  `InitTime` tinyint(4) NOT NULL default '0',
  `IncrementTime` tinyint(4) NOT NULL default '0',
  `EffectDate` date NOT NULL default '0000-00-00',
  PRIMARY KEY  (`RateID`),
  UNIQUE KEY `AreaCode_2` (`AreaCode`,`ReselerID`,`EffectUT`),
  KEY `EffectUT` (`EffectUT`),
  FULLTEXT KEY `AreaCode` (`AreaCode`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1  AUTO_INCREMENT=34104 ;
   


jusqu'a présent (avant l'ajout du champ RateID en auto_increment) j'utilisait REPLACE pour insérer ou mettre a jour des données.
le pb maintenant c'est que replace me change mon auto_incrément (car il effectue un DELETE avant de refaire un INSERT)
 
j'ai donc pensé utiliser la fonction avec ON DUPLICATE KEY ..

INSERT INTO RateTable
SELECT ''  as RateId,
          AreaCode,
          ReselerID,
          UNIX_TIMESTAMP(EffectDate) as 'EffectUT',
          0 as 'AreaID',
          AreaName,
          Price,  
          0 as 'InitTime',
          0 as 'IncrementTime',
          EffectDate
FROM TMP_Rate
ON DUPLICATE KEY UPDATE RateID = TMP_Rate.RateID
        ,AreaCode = TMP_Rate.AreaCode
        ,ReselerID= TMP_Rate.ReselerID
        ,EffectUT= UNIX_TIMESTAMP(TMP_Rate.EffectDate)
        ,AreaID = 0
        ,AreaName= TMP_Rate.AreaName
        ,Price= TMP_Rate.Price
        ,InitTime= 0
        ,IncrementTime= 0
        ,EffectDate=TMP_Rate.EffectDate;


mais apriori on peut pas pas faire un UPDATE comme cela ..
 
d'autres idée pour éviter de faire un test pour chaque ligne inséré.
 
merci.

mood
Publicité
Posté le 20-09-2005 à 12:03:52  profilanswer
 

n°1204596
Kytrix
Posté le 21-09-2005 à 17:06:00  profilanswer
 

up


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mysql Insert Replace et auto_increment sont dans un bateau

 

Sujets relatifs
problème avec un bete insert[MySQL] Besoin d'aide - Optimisation d'une requête très lourde
Pb "too connection" a mon serveur mysqlMySQL aide pour select
Bulk INSERT TUNNINGmysql via odbc
Importer un fichier xml vers une BDD Mysql ?Besoin de conseils pour créer une base mysql
Publipostage Word avec PHP/MySqlTransfert auto entre deux serveurs :)
Plus de sujets relatifs à : Mysql Insert Replace et auto_increment sont dans un bateau


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR