Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL Sisipkan baris, pada duplikat:tambahkan sufiks dan masukkan kembali

Anda dapat membuat pemicu yang mengubah nilai NEW.slug sebelum memasukkannya.

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 ;

Dan inilah hasilnya

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. Pembaruan SQL dari tabel Nama acak

  2. File .PDF Besar Tidak Mengunggah Ke Database MySQL sebagai BLOB Sedang Melalui PHP, File di bawah 2MB Berfungsi dengan Baik

  3. Flutter terhubung ke database di server

  4. Perbarui Bidang Saat Tidak Null

  5. Bagaimana cara mengembalikan tipe bidang dari kueri MySQL?