103 votes

Puis-je utiliser une fonction pour une valeur par défaut dans MySql ?

Je veux faire quelque chose comme ceci:

Cependant, cela entraîne une erreur, existe-t-il un moyen d’appeler une fonction pour une valeur par défaut dans mysql?

merci.

143voto

Harrison Fisk Points 3867

Non, vous ne pouvez pas.

Cependant, vous pouvez facilement créer un déclencheur pour ce faire, tel que:

 CRÉER UN DÉCLENCHEUR before_insert_app_users AVANT D’INSÉRER SUR app_users POUR CHAQUE ENSEMBLE DE LIGNES new.api_key = uuid(); 

54voto

Shadow Points 24929

Depuis mysql v8.0.13 , il est possible d’utiliser une expression comme valeur par défaut pour un champ :

La valeur par défaut spécifiée dans une clause DEFAULT peut être une constante littérale ou une expression. À une exception près, placez les valeurs par défaut de l’expression entre parenthèses pour les distinguer des valeurs par défaut de constante littérale.

24voto

Pamput Points 1856

Comme déjà dit, vous ne pouvez pas.

Si vous souhaitez simuler ce comportement, vous pouvez utiliser un déclencheur de la manière suivante :

Vous devez toujours mettre à jour les lignes existantes, comme ceci :

9voto

TravisO Points 6257

Malheureusement non, MySQL 5 nécessite des constantes pour la valeur par défaut. La question a été discutée beaucoup plus en détail dans le lien ci-dessous. Mais la seule réponse est d’autoriser null et d’ajouter un déclencheur de table.

MySQL n’a accepté que récemment l’UUID dans le cadre de son package de base de données, et il n’est pas aussi riche en fonctionnalités que nous le souhaiterions.

http://www.phpbuilder.com/board/showthread.php?t=10349169

7voto

Thibaut Barrère Points 2865

Je crois que vous ne pouvez pas :

la valeur par défaut doit être une constante ; il ne peut pas s’agir d’une fonction ou d’une expression

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X