Ответ 1
Нет, вы не можете.
Однако вы можете легко создать триггер для этого, например:
CREATE TRIGGER before_insert_app_users BEFORE INSERT ON app_users FOR EACH ROW SET new.api_key = uuid();
Я хочу сделать что-то вроде этого:
create table app_users
(
app_user_id smallint(6) not null auto_increment primary key,
api_key char(36) not null default uuid()
);
Однако это приводит к ошибке, есть ли способ вызвать функцию для значения по умолчанию в mysql?
спасибо.
Нет, вы не можете.
Однако вы можете легко создать триггер для этого, например:
CREATE TRIGGER before_insert_app_users BEFORE INSERT ON app_users FOR EACH ROW SET new.api_key = uuid();
Как уже было сказано, вы не можете.
Если вы хотите имитировать это поведение, вы можете использовать триггер следующим образом:
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());
К сожалению нет, MySQL 5 требует констант по умолчанию. Этот вопрос обсуждался более подробно в приведенной ниже ссылке. Но единственный ответ - разрешить null и добавить триггер таблицы.
MySQL только недавно принял UUID как часть своего пакета DB, и он не так богат, как хотелось бы.
Я считаю вы не можете:
значение по умолчанию должно быть константой; это не может быть функцией или выражением