Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL Wstaw wiersz, przy duplikacie:dodaj sufiks i wstaw ponownie

Możesz utworzyć wyzwalacz który zmienia wartość NEW.slug przed jego wstawieniem.

drop trigger if exists changeSlug;

delimiter |

CREATE TRIGGER changeSlug BEFORE INSERT ON slugs
  FOR EACH ROW BEGIN
     declare original_slug varchar(255);
     declare slug_counter int;
     set original_slug = new.slug;
     set slug_counter = 1;
     while exists (select true from slugs where slug = new.slug) do
        set new.slug = concat(original_slug, '-', slug_counter); 
        set slug_counter = slug_counter + 1;
     end while;

  END;
|
delimiter ;

I to byłyby wyniki

mysql> insert into slugs values ("dude");
Query OK, 1 row affected (0.00 sec)

mysql> insert into slugs values ("dude");
Query OK, 1 row affected (0.00 sec)

mysql> insert into slugs values ("dude");
Query OK, 1 row affected (0.00 sec)

mysql> select * from slugs;
+--------+
| slug   |
+--------+
| dude   |
| dude-1 |
| dude-2 |
+--------+
3 rows in set (0.00 sec)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Konwertuj datę i godzinę JS na datę i godzinę MySQL

  2. php artisan migrować rzucanie [Wyjątek PDO] Nie można znaleźć sterownika — Korzystanie z Laravel

  3. Jak przechowywać pole tekstowe w wielu językach w mysql za pomocą php?

  4. Przeczytaj jedną kolumnę z jednego wiersza z bazy danych MySQL

  5. Korzystanie z automatyzacji w celu przyspieszenia testów wersji w klastrze Galera z ClusterControl