MySQL: Comment insérer plusieurs enregistrements avec le même ID de type autoincrement
J'ai une table avec 1 colonne qui stocke l'ID auto_increment et avec cette instruction:
$query = "SELECT first_data, second_data, third_data
FROM table_data
WHERE condition = 'value_condition'";
$result = mysql_query($query) or die(mysql_error());
$no_of_rows = mysql_num_rows($result);
if ($no_of_rows > 0) {
while($row = mysql_fetch_assoc($result)) {
$valueone = $row['first_data'];
$valuetwo = $row['second_data'];
$valuethree = $row['third_data'];
$queryTwo = "INSERT INTO historial_ventas (reg1, reg2, reg3)
VALUES('$ivalueone','$valuetwo','$valuethree')";
$resultTwol = mysql_query($queryTwo) or die(mysql_error());
}
} else {
return false;
}
L'Information est stockée comme suit:
ID(auto_increment) reg1 reg2 reg3
______________________________________________
1 value1 value2 value3
2 value1 value2 value3
3 value1 value2 value3
4 value1 value2 value3
Mais je veux les registres tenus dans la boucle while, stockées avec le même ID que lors d'un achat en ligne, c'est à dire vous enregistrer les produits et leurs caractéristiques, mais avec le même ID pour acheter, comme de cette façon:
ID(auto_increment) reg1 reg2 reg3
______________________________________________
1 value1 value2 value3
1 value1 value2 value3
1 value1 value2 value3
1 value1 value2 value3
Vous devez vous connecter pour publier un commentaire.
Normalisées de façon est d'utiliser conjointement un tableau comme ceci:
Les deux
PurchaseId
etItemId
sont définies à l'auto-incrémentation. Le but d'une Clé Primaire est d'identifier de manière unique chaque ligne.Mise À Jour: Client
Lire sur Normalisation De Base De Données sur comment vous pouvez concevoir votre base de données pour être efficace.
Je suis en supposant que le
ID
colonne est défini comme clé primaire, auquel cas son objectif est la fourniture d'une pièce unique de données afin d'identifier chaque enregistrement par -, il est impossible d'avoir deux enregistrements dans la même table avec la même clé primaire. Qu'est-ce exactement que vous voulez accomplir? Si vous souhaitez stocker l'ID d'achat, vous devez créer une colonne séparée pour et de le stocker de manière explicite - un incrément automatique de la colonne n'est pas ce que vous cherchez.Supprimer l'auto-incrémentation et entrez manuellement le numéro d'identification. Aussi, vous devez vérifier si elle a la valeur d'une clé primaire (ie. unique). Assurez-vous que c'est ce que vous voulez faire parce que la suppression de l'unicité peut provoquer des problèmes avec la duplicité plus tard.
Pour ce faire, avant d'entrer dans la boucle while, vous pouvez obtenir le nombre maximal (
select max(id) from tablename
), l'incrémenter par un et ensuite de l'insérer dans la boucle while.