У меня есть следующая таблица:
id
поля установлен на AUTO_INCREMENT
. Я хочу, чтобы поле user_id
имело те же значения, что и id
.
Во-первых, я попытался установить user_id
как AUTO_INCREMENT
, но это невозможно сделать, потому что в таблице может быть только одно поле AUTO_INCREMENT
.
Во-вторых, я попытался написать триггер, который будет присваивать значения от id
user_id
:
create trigger 'upd' before update
on 'obligations'
for each row
set old.user_id = old.id;
Это дает следующую ошибку:
ERROR 1362 (HY000): Updating of OLD row is not allowed in trigger
Может ли кто-нибудь предложить, как это решить?
Примечание. Мой вопрос отличается от того, что он дает ошибку OLD trigger statement, а не NEW trigger statement error.
Я сделал это, создав триггер, который будет запущен в каждую операцию вставки. посмотрите на следующее:
DELIMITER $$
CREATE TRIGGER insert_example
BEFORE INSERT ON obligations
FOR EACH ROW
SET NEW.user_id=
( SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE()
AND TABLE_NAME = 'obligations' );
end $$
after update