Phpmyadmin 触发器
Phpmyadmin Trigger
我需要在 phpmyadmin 中触发 2 tables。
所以有 table stores
和 tbl_storefinder_stores
.
我想从 table stores
到 tbl_storefinder_stores
插入 4 个东西(名称、地址、经度、纬度),我通过此代码在论坛中获得帮助
INSERT INTO tbl_storefinder_stores(store_name, store_address, lat, lon)
SELECT name, address, latitude, longitude
FROM stores;
及其作品!!
但现在我想要一个 触发器 来自动执行此操作,例如:
如果我在 table Stores
中更改或添加任何内容,它会自动更新 table tbl_storefinder_stores
,就像 4 件事 (name/adress/longitude/latitude) 的更新程序一样,如何在 phpmyadmin 中执行此操作?
您将需要 2 个触发器
当您在 stores
中添加一条新记录然后将其复制到 tbl_storefinder_stores
当您更新 stores
中的某些数据时,然后将它们也更新为 tbl_storefinder_stores
。
现在这 2 个 table 之间必须有一个公共密钥,我假设 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 ;
请注意,在第二个触发器中,我已将 name
视为它们之间的公共键,因此如果您更改第一个 table 中的名称,则触发器可能不会更新数据,因为它可能不会在第二个 table 中找到具有修改后名称的行。
因此,如果您仍然想这样做,您可以按照
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 ;
您只需要更新重复的密钥,对吗?
你可以使用 ON DUPLICATE KEY UPDATE
请访问了解更多详情
here
我需要在 phpmyadmin 中触发 2 tables。
所以有 table stores
和 tbl_storefinder_stores
.
我想从 table stores
到 tbl_storefinder_stores
插入 4 个东西(名称、地址、经度、纬度),我通过此代码在论坛中获得帮助
INSERT INTO tbl_storefinder_stores(store_name, store_address, lat, lon)
SELECT name, address, latitude, longitude
FROM stores;
及其作品!!
但现在我想要一个 触发器 来自动执行此操作,例如:
如果我在 table Stores
中更改或添加任何内容,它会自动更新 table tbl_storefinder_stores
,就像 4 件事 (name/adress/longitude/latitude) 的更新程序一样,如何在 phpmyadmin 中执行此操作?
您将需要 2 个触发器
当您在
stores
中添加一条新记录然后将其复制到tbl_storefinder_stores
当您更新
stores
中的某些数据时,然后将它们也更新为tbl_storefinder_stores
。
现在这 2 个 table 之间必须有一个公共密钥,我假设 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 ;
请注意,在第二个触发器中,我已将 name
视为它们之间的公共键,因此如果您更改第一个 table 中的名称,则触发器可能不会更新数据,因为它可能不会在第二个 table 中找到具有修改后名称的行。
因此,如果您仍然想这样做,您可以按照
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 ;
您只需要更新重复的密钥,对吗?
你可以使用 ON DUPLICATE KEY UPDATE
请访问了解更多详情 here