我正在使用PHP和MySQL来调用一些命令。存在集团-员工对照表,可以在集团中增加或删除员工。我编写此功能的方法是:首先删除所有员工,如果组被修改,则添加回表中的每个员工。但我希望确保所有命令都能通过,否则会回滚该表。我怎样才能确保命令自动执行呢?
发布于 2011-02-10 10:02:41
除非我弄错了,否则你要找的是交易。
这是一个很好的起点:http://dev.mysql.com/doc/refman/5.0/en/sql-syntax-transactions.html
发布于 2011-02-10 10:10:10
假设您的目标表支持事务,那么您需要mysqli transaction方法系列。
请参见:
如果您的表不支持事务,您可以毫无问题地将您的表类型更改为'InnoDB`,从而支持事务。请先咨询您的数据库管理员,然后再执行此操作。
发布于 2011-02-10 10:10:15
如果您使用的是MyIsam引擎而不是InnoDB,那么就不能利用事务。在这种情况下,最好的办法是先执行所有的插入操作(您的交叉引用表应该有一个两字段的唯一约束,这样dups就会悄悄地失败)。然后执行一次删除:
DELETE FROM employees_groups
WHERE group_id = <groupid>
AND employee_id NOT IN (list of employee ids you just inserted)https://stackoverflow.com/questions/4952671
复制相似问题