2015-06-09 3 views
1

Мне нужен триггер в phpmyadmin для 2 таблиц.Phpmyadmin Trigger

Так что есть таблица stores и tbl_storefinder_stores.
Я хотел вставить 4 вещи (имя, адрес, долгота, широта) из таблицы stores в tbl_storefinder_stores, получить помощь в форуме по этому коду

INSERT INTO tbl_storefinder_stores(store_name, store_address, lat, lon) 
SELECT name, address, latitude, longitude 
FROM stores; 

и его работа !!

Но теперь я хочу триггер, что сделать это автоматически, как: Если изменить или добавить что-нибудь в таблице Stores что она обновляет таблицу tbl_storefinder_stores автоматически, как Updater для 4 вещей (имя/адрес/долготы/широта), Как это сделать в phpmyadmin?

+0

PHPMyAdmin просто веб-приложение, которое позволяет работать с базой данных MySQL, вы должны сделать Google для MySQL триггеры. Вот [официальные документы] (https://dev.mysql.com/doc/refman/5.5/ru/trigger-syntax.html). –

+0

Я знаю, но мне нужна помощь с триггеркодом http://i.stack.imgur.com/lpZD6.png – M6Gpower

ответ

2

Вам нужно будет 2 триггеров

  • При добавлении новой записи в stores затем повторить его tbl_storefinder_stores

  • При обновлении некоторых данных в stores затем обновить их tbl_storefinder_stores, а также.

Теперь 2 таблицы должны иметь общий ключ между ними и я предполагаю, что name является ключевым здесь. Первый триггер будет выглядеть

delimiter // 
create trigger stores_ins after insert on stores 
for each row 
begin 
insert into tbl_storefinder_stores 
(store_name, store_address, lat, lon) 
values 
(new.name,new.address,new.latitude,new.longitude); 
end;// 

delimiter ; 

Теперь, когда вы обновляете это будет выглядеть

delimiter // 
create trigger stores_upd after update on stores 
for each row 
begin 
update tbl_storefinder_stores 
set 
store_address = new.address, 
lat = new.latitude, 
lon = new.longitude 
where store_name = new.name ; 
end;// 
delimiter ; 

Обратите внимание, что во 2-й триггер я рассматривал name как общий ключ между ними, так что если вы измените имя в первой таблице, то триггер может не обновлять данные, так как он может не найти строку во второй таблице с измененным именем.

Так что, если вы все еще хотите сделать, так что вы можете сделать, как

delimiter // 
create trigger stores_upd after update on stores 
for each row 
begin 
update tbl_storefinder_stores 
set 
name = new.name, 
store_address = new.address, 
lat = new.latitude, 
lon = new.longitude 
where store_name = old.name ; 
end;// 
delimiter ; 
+0

Благодарим вас за ответ, есть ли способ использовать ID как общий ключ, который выглядит в таблице базы данных это: http://i.stack.imgur.com/lpZD6.png, потому что, может быть, если я отредактирую имя в первой таблице, что второй тоже изменится, есть еще одна проблема, что у них разные идентификаторы, как я могу синхронизировать – M6Gpower

+0

Правильно, вы должны использовать 'ID' для второго триггера и хранить идентификатор из первой таблицы во вторую таблицу.Так что операция обновления выполняется в отношении идентификатора вместо имени и целостности данных. –

+0

Итак, как выглядит код, если я хочу синхронизировать идентификаторы и использовать идентификаторы в качестве общего ключа – M6Gpower

2

вам просто нужно обновить на дубликат ключа справа?

Чем вы можете использовать дублирование KEY UPDATE

пожалуйста Посетите для более подробной информации here

+0

Это должен быть комментарий, а не ответ! –

Смежные вопросы