sql >> Database >  >> RDS >> Mysql

MySQL Rij invoegen, bij duplicaat:achtervoegsel toevoegen en opnieuw invoegen

Je zou een trigger kunnen maken dat de waarde van NEW.slug verandert voordat deze wordt ingevoegd.

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 ;

En dit zouden de resultaten zijn

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. pyodbc.connect() werkt, maar niet sqlalchemy.create_engine().connect()

  2. Hoeveel tabellen kunnen er in een mysql-database worden gemaakt?

  3. MySQL-opruimtabel van dubbele vermeldingen EN koppel FK opnieuw in afhankelijke tabel

  4. Verbinding maken met mysql met behulp van php