我是新来的这一点,并希望一些help.i有名字“ABC”表以下条目如何使用触发
+------+--------+------+
| Id | Name | City |
+------+--------+------+
| 101 | john | abc |
| 102 | Miller | cbz |
+------+--------+------+
和另一个表“XYZ”
+------+--------+------+
| Id | Name | City |
+------+--------+------+
| 102 | Miller | cbz |
+------+--------+------+
更新表我在表“abc”上应用触发器,它将用最近插入的值更新表“xyz”,并删除所有以前的条目...例如,当我在“abc”表中引发插入查询时,我得到“abc”as按照
insert into abc Values(103,'Joseph','xyz');
我得到表 “ABC” 输出,
+------+--------+------+
| Id | Name | City |
+------+--------+------+
| 101 | john | abc |
| 102 | Miller | cbz |
| 103 | Joseph | xyz |
+------+--------+------+
和表 “XYZ” 是,
+------+--------+------+
| Id | Name | City |
+------+--------+------+
| 103 | Joseph | xyz |
+------+--------+------+
现在我的问题是如何只使用一个表来达致这(我不想使用两张表,因为这不是我的要求)。 像下面..
insert into xyz values(104,'Ridhit','pqr');
+------+--------+------+
| Id | Name | City |
+------+--------+------+
| 104 | Ridhit | pqr |
+------+--------+------+
请help.Trigger我使用的是
DELIMITER !!
create trigger OnlyOne BEFORE INSERT on abc
for each row
BEGIN
DECLARE a1 INT;
Select count(1) INTO a1 from xyz;
IF a1>0 THEN
delete from xyz limit 1;
insert into xyz(Id,Name,City) values (new.Id,new.Name,new.City);
ELSE
insert into xyz(Id,Name,City) values (new.Id,new.Name,new.City);
END IF;
END;
!!
DELIMITER ;
你的意思是你会在'xyz'上插入,它会在添加新的之前删除先前的条目?如果是这样,这是不可能的触发器。你不能在触发完成的同一张表上插入/更新/删除。 – 2014-12-02 08:12:32
ohh:(...所以任何其他解决方案...? – SimplyMe 2014-12-02 08:14:14
可能你需要在应用程序级别内完成 – 2014-12-02 08:17:09