Оператор «для обновления» блокирует строку в таблице счетчиков. Это позволяет избежать дубликатов, создаваемых несколькими потоками.

я есть база данных MySQL, которая содержит таблицу пользователей. Первичным ключом таблицы является «идентификатор пользователя», который устанавливается как поле с автоматическим приращением.

Что я хотел бы сделать, так это когда я вставляю нового пользователя в таблицу, чтобы использовать то же значение, которое автоматическое увеличение создает в поле 'userid' в другом поле 'default_assignment'.

например

Я хотел бы заявление, как это:

INSERT INTO users ('username','default_assignment') VALUES ('barry', value_of_auto_increment_field())

поэтому я создаю пользователя «Барри», «идентификатор пользователя» генерируется как 16 (например), но я также хочу, чтобы «default_assignment» имел то же значение 16.

Есть ли способ достичь этого, пожалуйста?

Спасибо!

Обновить:

Спасибо за ответы. Поле default_assignment не является избыточным. Параметр default_assigment может ссылаться на любого пользователя в таблице пользователей. При создании пользователя у меня уже есть форма, которая позволяет выбрать другого пользователя в качестве default_assignment, однако есть случаи, когда его необходимо установить для того же пользователя, поэтому мой вопрос.

Обновить:

Хорошо, я опробовал предложение триггеров обновления, но все еще не могу заставить это работать. Вот триггер, который я создал:

CREATE TRIGGER default_assignment_self BEFORE INSERT ON `users`  
FOR EACH ROW BEGIN
SET NEW.default_assignment = NEW.userid;
END;

Однако при вставке нового пользователя default_assignment всегда устанавливается в 0.

Если я вручную установлю ID пользователя, тогда default_assignment будет установлен на ID пользователя.

Следовательно, процесс генерации автоматического назначения явно происходит после того, как срабатывает триггер.

Ответы на вопрос(10)

Ваш ответ на вопрос