Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL Chèn hàng, trên bản sao:thêm hậu tố và chèn lại

Bạn có thể tạo trình kích hoạt làm thay đổi giá trị của NEW.slug trước khi chèn nó.

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 ;

Và đây sẽ là kết quả

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. php pdo chỉ nhận một giá trị từ mysql; giá trị bằng với biến

  2. Làm thế nào để tạo các thủ tục tạm thời trong MySQL?

  3. Để có Vim-like K trong Screen cho MySQL

  4. Hiệu suất MySQL - 5 tham số từ tệp cấu hình

  5. PostgreSQL tương đương cho MySQL GROUP BY