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

MySQL зададе ID по подразбиране UUID

MySQL 5.7, 8.0.12 и по-стари версии

MySQL от 5.7 или 8.0.12 не поддържа използването на функция или израз като стойност по подразбиране на колона.

https://dev.mysql.com/doc /refman/5.7/en/data-type-defaults.html

Алтернативата би била да се използва тригер за наблюдение на BEFORE INSERT от желаната таблица.

DELIMITER ;;
CREATE TRIGGER `foo_before_insert` 
BEFORE INSERT ON `foo` FOR EACH ROW 
BEGIN
  IF new.id IS NULL THEN
    SET new.id = uuid();
  END IF;
END;;
DELIMITER ;

Това ще промени стойността по подразбиране на INSERT израз към uuid() стойност, освен ако не е изрично дефинирана.

MySQL 8.0.13 и по-нова версия

С издание на MySQL 8.0.13 израз вече може да се използва като стойност по подразбиране, при условие че е ограден в скоби.

Пример db<>fiddle

https://dev.mysql.com/doc /refman/8.0/en/data-type-defaults.html



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql заявка с две таблици php

  2. Как да предотвратим sql-инжекция в nodejs и sequelize?

  3. Заявка за намиране на таблици, променени през последния час

  4. Sequelize:Използване на множество бази данни

  5. Сумирайте първите 5 стойности в MySQL