Привет, ребята, я новичок в mysql.Я сделал некоторый код с триггером mysql, но он выдает мне ошибку во втором условии. КодОшибка триггера с mysql во втором случае
Это один работает отлично
create table foo (a INT, b INT, ts TIMESTAMP);
create table bar (a INT, b INT);
INSERT INTO foo (a,b) VALUES(5,1);
INSERT INTO foo (a,b) VALUES(4,2);
INSERT INTO foo (a,b) VALUES(3,3);
CREATE TRIGGER ins_sum AFTER UPDATE ON foo
FOR EACH ROW
insert into bar values(OLD.a,NEW.b);
UPDATE foo SET a = 3 WHERE b = 1;
Он успешно выводит 5
.
Код ошибки
create table foo (a INT, b INT, ts TIMESTAMP);
create table bar (a INT, b INT);
INSERT INTO foo (a,b) VALUES(5,1);
INSERT INTO foo (a,b) VALUES(4,2);
INSERT INTO foo (a,b) VALUES(3,3);
CREATE TRIGGER ins_sum AFTER UPDATE ON foo
FOR EACH ROW
insert into bar values(OLD.a,NEW.b);
insert into bar values(OLD.a,NEW.b);
UPDATE foo SET a = 3 WHERE b = 1;
Когда я назвал как select a from bar where b = 1
.Отель ожидаемого результата 5 and 4
.
Но вместо этого .it выходы как Schema Creation Failed: Unknown column 'OLD.a' in 'field list':
Так что мой вопрос, почему не делает второй вариант работы здесь ..Whay косяк я добавить NEW.a and NEW.b
в операторе вставки второй раз.
Thanx за помощь ..
ли вы на самом деле означает, чтобы вставить те же значения, дважды во втором варианте? Почему вы ожидаете, что результаты 'SELECT' будут' 5' и '4'? Я просто получаю '5'. – Barmar
@Barmar см., Когда мы используем 'UPDATE foo SET a = 3 WHERE b = 1;' значение a и b будет 3 и 1, что является новым значением. Я использовал 'insert into bar values (OLD.a , NEW.b); 'поэтому в старом разделе это должно быть 5, который отлично работает .. и там во второй строке старое значение равно 4 ..why 4 is not print вместо вывода 5. Что я хочу в выводе 5 и 4. –
@Barmar старое значение установлено равным 5 (которое находится в первой строке во второй строке, старое значение a равно 4 .. почему бы не получить доступ к нему. Возможно ли это с помощью триггеров ??. если да, пожалуйста, помогите мне .. –