Я новичок в этой триггерной вещи с PHPMyAdmin. Я действительно не знаю, что я делаю неправильно, но хочу просто скопировать все данные из table1
в table2
например, в архив или что-то в этом роде. Каждый раз, когда есть вставка, он должен скопировать данные в table2
.
Table1
есть эти атрибуты/поля:
ID
customerID
BookSN(SN = serialnumber)
created_at(when he lend the book)
updated_at(when he gave the book back)
Table2
:
Имеет те же атрибуты/поля, что и в Table1
Я пытаюсь решить это:
delimiter //
CREATE TRIGGER 'simple_copy' AFTER INSERT ON table1
FOR EACH ROW BEGIN
insert into table2(id, customerID, BookSN, created_at,updated_at)
select ?? -- i dont know what to write here...
from table1;
END;
//
delimiter ;
Я был бы очень благодарен, если бы вы помогли мне исправить этот общий беспорядок.
Если в table1
есть некоторые данные, которые вы хотите скопировать в table2
сначала выполните это:
INSERT INTO table2(id, customerID, BookSN, created_at, updated_at)
SELECT id, customerID, BookSN, created_at, updated_at
FROM table1;
Затем вы можете использовать триггер для непрерывной копирования вновь вставленных данных из table1
в table2
.
DELIMITER //
CREATE TRIGGER 'simple_copy' AFTER INSERT ON table1
FOR EACH ROW BEGIN
INSERT INTO table2(id, customerID, BookSN, created_at, updated_at)
VALUE (new.id, new.customerID, new.BookSN, new.created_at, new.updated_at);
END//
DELIMITER ;
Но если table1
пуста, то просто запустите сразу триггер.
Если вы хотите скопировать все столбцы, вы должны использовать это
delimiter #
CREATE TRIGGER 'simple_copy' AFTER INSERT ON table1
FOR EACH ROW
BEGIN
insert into table2(id, customerID, BookSN, created_at,updated_at)
values (new.id, new.customerID, new.BookSN, new.created_at,new.updated_at)
from table1;
END#
delimiter ;