Maison >base de données >tutoriel mysql >MySQL peut-il utiliser des fonctions pour définir les valeurs de colonne par défaut ?

MySQL peut-il utiliser des fonctions pour définir les valeurs de colonne par défaut ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-17 05:21:26824parcourir

Can MySQL Use Functions to Set Default Column Values?

Attribuer des valeurs par défaut avec des fonctions dans MySQL

Dans MySQL, les valeurs par défaut des colonnes de table sont généralement définies comme des valeurs statiques, telles que des constantes ou expressions. Cependant, certains utilisateurs peuvent rencontrer des cas où ils souhaitent attribuer des valeurs par défaut à l'aide de fonctions. Cette question explore si une telle fonctionnalité est prise en charge dans MySQL.

Question :

MySQL peut-il attribuer des valeurs de colonne par défaut à l'aide de fonctions ? Par exemple, l'instruction suivante peut-elle être exécutée avec succès ?

create table app_users
(
    app_user_id smallint(6) not null auto_increment primary key,
    api_key     char(36) not null default uuid()
);

Réponse :

Non, MySQL ne permet pas d'attribuer des valeurs de colonne par défaut à l'aide de fonctions. Toute tentative en ce sens entraînera une erreur.

Solution :

Bien que MySQL lui-même ne prenne pas en charge les valeurs par défaut basées sur les fonctions, une solution de contournement peut être obtenue à l'aide de déclencheurs. Voici un exemple de déclencheur qui attribue une valeur UUID par défaut à la colonne api_key avant d'insérer une nouvelle ligne dans la table app_users :

CREATE TRIGGER before_insert_app_users
  BEFORE INSERT ON app_users 
  FOR EACH ROW
  SET new.api_key = uuid();

Ce déclencheur générera et attribuera automatiquement un nouvel UUID à la colonne api_key pour chaque nouveau ligne insérée dans la table app_users.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn