Mysql
 sql >> база данни >  >> RDS >> Mysql

Можете ли да получите достъп до стойността за автоматично увеличение в MySQL в рамките на едно изявление?

няма нужда да създавате друга таблица и max() ще има проблеми според стойността auto_increment на таблицата, направете това:

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   DECLARE next_id;
   SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl');
   SET NEW.field = next_id;
END

Декларирам променливата next_id, защото обикновено тя ще се използва по някакъв друг начин(*), но можете да направите направо new.field=(select ...)

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   SET NEW.field=(SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl');
END

Също така в случаите на (Поле SELECT низ) можете да използвате CAST стойност;

CREATE TRIGGER trigger_name BEFORE INSERT ON tbl FOR EACH ROW
BEGIN
   SET NEW.field=CAST((SELECT aStringField FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='tbl') AS UNSIGNED);
END

(*) За автоматично именуване на изображение:

SET NEW.field = CONCAT('image_', next_id, '.gif');

(*) За да създадете хеш:

SET NEW.field = CONCAT( MD5( next_id ) , MD5( FLOOR( RAND( ) *10000000 ) ) );


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JSON_STORAGE_SIZE() – Намерете размера на съхранение на JSON документ в MySQL

  2. PHP CRUD Създавайте, редактирайте, актуализирайте и изтривайте публикации с MySQL база данни

  3. Как да създадете блог в PHP и MySQL база данни - DB дизайн

  4. Как да се свържете с база данни с помощта на Workbench MySQL клиента

  5. Laravel 5 PDOException не можа да намери драйвер