Я знаю, что столбцы типа varchar не могут быть увеличены, но я хочу сделать что-то вроде этого:
При вставке дублированного значения новое будет помечено цифрой в конце.
Например, у нас есть post-name в нашем столбце в базе данных. Введено другое значение post-name, поэтому следующее будет post-name-2
, с последующим post-name-3
,
Я запрограммировал что-то в php, но это не очень удобно.
$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";}
Вместо того, чтобы пытаться создать сложный процесс, чтобы сохранить правильное имя, просто добавьте отдельное поле version
Тогда для пользовательского интерфейса просто объединить оба
SELECT CONCAT(post , '-', version)
Вы можете использовать цикл do … while для проверки следующих чисел. Это не проблема производительности, потому что вы будете использовать это только для сохранения новой записи.