Mysql назначение по умолчанию вызывает ошибку - PullRequest
2 голосов
/ 27 июля 2010

Я пытаюсь выполнить приведенный ниже запрос для создания таблицы в MySQL и получаю сообщение об ошибке.

create table newtable ( 
       version_id int(11) auto_increment not null, 
       test_id int(11)   default version_id, 
       primary key(version_id) 
 );

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'version_id not null, primary key(version_id), unique key(test_id) )' at line 1

Я получаю вышеуказанную ошибку.

Я думаю, что проблема заключается в установке test_id по умолчанию в качестве version_id, потому что это работает иначе.

Спасибо
Bala

-- Update

Вот что я хотел сделать,

Когда я создаю новую строку, я хочу использовать version_id в качестве ключа. Когда я обновляюсь, я хочу использовать значение существующей записи в качестве ключа. Обратите внимание, что test_id не является первичным ключом.

1 Ответ

2 голосов
/ 27 июля 2010

Я не думаю, что вы можете использовать «переменные» в качестве значений по умолчанию. Вероятно, они должны быть постоянными. Если вы хотите получить этот эффект, вы, вероятно, могли бы сделать это в хранимой процедуре / триггере "перед вставкой", так что если не указан параметр trial_id, ему будет присвоено то же значение, что и version_id ...

Вот учебник , который может помочь вам в этом.

Я думаю, ваш триггер будет выглядеть примерно так:

mysql> CREATE TRIGGER myTrigger
    -> BEFORE INSERT ON newtable
    -> FOR EACH ROW
    -> BEGIN
    ->      IF NEW.trial_id IS NULL THEN
    ->         SET NEW.trial_id = NEW.version_id;
    ->      END IF;
    -> END$$
...