在插入一组新数据之前,我正在尝试清除/清空/截断MySQL中的表。我认为这只能使用触发器来完成。
我创建了以下触发器:
create trigger top_destinations_truncate BEFORE INSERT
on top_destinations FOR EACH ROW
delete from top_destinations
但是当我尝试用我的查询添加几百条记录时,我收到了这个错误:
HY000不能更新存储的函数/触发器中的表'top_destinations',因为它已被调用此存储的语句使用 功能/触发。
如果触发器不存在,insert into table top_destinations
查询本身可以正常工作。但我每次都需要一个新的开始......
我该怎么办?也许在没有触发器的MySQL中有更好的方法:像顺序类型的查询。首先截断,稍等一下,然后插入,如果可能的话。
答案 0 :(得分:2)
您可以使用TRANSACTION,因此对于其他查询,您的表永远不会为空,但这不是最快的方法。
START TRANSACTION;
DELETE FROM your_table;
INSERT into your_table ...
...
INSERT into your_table ....
COMMIT;
或更快的方式:
TRUNCATE yout_table;
INSERT into your_table ...
...
INSERT into your_table ....
以这种方式TRUNCATE删除并重新创建表,并且不能在TRANSACTION中使用,但速度非常快。