je sais que le type varchar de colonnes ne sont pas incrémenté, mais je veux faire quelque chose comme ceci:valeurs d'incrément varchar sur entrée en double
Lorsqu'une valeur dupliquée est insérée, le nouveau sera étiqueté avec un numéro à la fin.
Par exemple, nous avons un post-nom sur notre colonne dans la base de données. Un autre post-nom de valeur est entré, donc le suivant sera post-name-2
, suivi de post-name-3
.
J'ai programmé quelque chose en PHP mais ce n'est pas très pratique.
$post_url_ = $post_url." %";
$stmt_check1 = $this->conn->prepare("SELECT * FROM post WHERE post_url LIKE :post_url ");
$stmt_check2 = $this->conn->prepare("SELECT * FROM post WHERE post_url = :post_url ");
$stmt_check1->bindparam(":post_url",$post_url_);
$stmt_check2->bindparam(":post_url",$post_url);
$stmt_check1->execute();
$stmt_check2->execute();
$rows1 = $stmt_check1->rowCount();
$rows2 = $stmt_check2->rowCount();
if($rows1<=0 && $rows2==1) {
$repeat_no = $rows1+1;
$post_url = $post_url."-$repeat_no";
}
if($rows1>0){
$repeat_no = $rows1+1;
$post_url = $post_url."-$repeat_no";
}
Au niveau db je pense qu'il vaut mieux créer un champ séparé pour cela. Autrement, vous ne pouvez pas comparer 'post-1' avec' post-2', et si vous avez besoin de faire une concaténation pour l'interface utilisateur, faites-le sur le 'SELECT' –
@JuanCarlosOropeza donc il n'y a aucun moyen que je peux mettre en place sur db niveau ? –
@JuanCarlosOropeza après avoir réfléchi un peu plus, ce que vous suggérez est que je crée un autre champ comme: duplicated_version. Et ce champ va contenir le nombre de cette URL particulière autant de fois qu'il est entré après sa création. Comme un compteur, merci cela résout le mieux. –