Можно ли использовать функцию для значения по умолчанию в MySql?

Я хочу сделать что-то вроде этого:


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

Однако это приводит к ошибке, есть ли способ вызвать функцию для значения по умолчанию в mysql?

спасибо.

Ответ 1

Нет, вы не можете.

Однако вы можете легко создать триггер для этого, например:

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

Ответ 2

Как уже было сказано, вы не можете.

Если вы хотите имитировать это поведение, вы можете использовать триггер следующим образом:

CREATE TRIGGER before_insert_app_users
BEFORE INSERT ON app_users
FOR EACH ROW
  IF new.uuid IS NULL
  THEN
    SET new.uuid = uuid();
  END IF;

Вам все равно придется обновлять ранее существующие строки, например:

UPDATE app_users SET uuid = (SELECT uuid());

Ответ 3

К сожалению нет, MySQL 5 требует констант по умолчанию. Этот вопрос обсуждался более подробно в приведенной ниже ссылке. Но единственный ответ - разрешить null и добавить триггер таблицы.

MySQL только недавно принял UUID как часть своего пакета DB, и он не так богат, как хотелось бы.

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

Ответ 4

Я считаю вы не можете:

значение по умолчанию должно быть константой; это не может быть функцией или выражением